RegisterWindowMessage()関数は、プロセス間で送信されるメッセージの登録にのみ使用されることが推奨されています。 1つのプロセス内で送信するためにメッセージが必要な場合は、範囲WM_APPから0xBFFFまで安全に選択できます。RegisterWindowMessageを乱用するとリソースが枯渇する可能性がありますか?
しかし私たちのコードベースでは、RegisterWindowMessage()が1つのプロセス内でのみ送信されるメッセージに使用されることがよくあります。これは、WM_APP..0xBFFFの範囲でメッセージ識別子を手動で配布する必要がないため、RegisterWindowMessage()を使用することの単純さが認識されたために行われたと思います。
多くのアプリケーションが1台のマシンで実行され、RegisterWindowMessage()によって返されるメッセージ識別子の範囲を使い果たす可能性のある異なる文字列でRegisterWindowMessage()を呼び出すと、失敗を示す値を返しますか? WM_APP..0xBFFFの範囲メッセージで十分である場合に、RegisterWindowMessage()メッセージを使用する正当な理由は何ですか?
は、C++ Builderの/ Delphiでそのバグについて知りませんでした! Nothing ... –
C++ Builder/Delphi(VCL)は、 'HInstance'(' GetModuleHandle')とスレッドIDからメッセージ名を生成します。通常の実行可能ファイルに関しては、 'HInstance'は変化せず、スレッドIDの範囲は限られているので、VCLアプリケーションがアトムテーブルを使い果たすことはありません。 VCLでDLLを組み込んだ場合は、もっと妥当性があります。または、実行可能ファイルにASLRが設定されている場合(Windows 8認証の要件とは何か)。 –