私はこのような今年のために自分のアプリケーションに個人的なメッセージを使用していたんだ。プライベートベースのアプリケーションメッセージを定義する方法は?
UM_APP_BASE = WM_APP; // WM_APP is declared as WM_APP = $8000; in "Controls" unit.
、その後、私の個人的なメッセージに定義:
UM_EXPLORER_MSG = UM_APP_BASE + 1;
UM_LICENSE_CHANGE_MSG = UM_APP_BASE + 2;
etc...
そして、私のクラスでは、このようにそれらを使用します。
をprocedure UMLicenseChanged(var Message: TMessage); message UM_LICENSE_CHANGE_MSG;
(私はRegisterWindowMessage
を使用して他のアプリケーションと「話す」が異なる話です)
最初にWM_USER
の代わりにWM_APP
を使用するように決めた理由を覚えていません。
ドキュメントは言う:
WM_USER定数はメッセージを区別するために使用されたプライベートウィンドウクラス内でメッセージを送信するために アプリケーションで使用でき、Windowsおよび値で使用するために予約されている 値。
Range Meaning
0 through WM_USER - 1 Messages reserved for use by Windows.
WM_USER through 0x7FFF Integer messages for use by private window classes.
0x8000 through 0xBFFF Messages reserved for future use by Windows.
0xC000 through 0xFFFF String messages for use by applications.
Greater than 0xFFFF Reserved by Windows for future use.
WM_APP
は、「Windowsが将来の使用のために予約」されていることを意味します。メッセージ番号の 5範囲があります。 一方、デルファイはその範囲にあるCM_BASE = $B000;
を使用しています。またCN_BASE = $BC00;
Windows/Delphi/Otherコントロールの両方で使用される他のメッセージと重複しないように基本メッセージを定義するにはどうすればよいですか? 私のアプリケーションのプライベートとして優先されるベースメッセージはどれですか?なぜ?
WM_APP
の代わりにWM_USER
を使用しますか? WM_USER
ベースはCommCtrlでもWindowsによって使用されます。 TB_ENABLEBUTTON = WM_USER + 1
。 ...
この問題についていくつかの洞察が必要です。
私はこれを私のDelphiヘルプAPI(D5)で読んでいます。これは明らかに時代遅れです!
これはおそらく私がWM_APP
を使用することを決めた理由です。
まだ、2つの違いについての説明はいいでしょう:)
['WM_APP'](http://msdn.microsoft.com/en-us/library/ms644930%28v=vs.85%29.aspx)または[' WM_USER']のドキュメントを読んでいる可能性があります(http://msdn.microsoft.com/en-us/library/ms644931%28v=vs.85%29.aspx)、 "WM_APP(0x8000)〜0xBFFF - アプリケーションが使用できるメッセージ* " –
どのようなドキュメントを参照していますか? –
@SertacAkyuz、今私はなぜdownvotes ...私は私のDelphiのヘルプファイル(D5)でこれを読んで理解する。これは明らかに時代遅れです!それでも正しい選択をしたとしても。"アプリケーションで使用可能なメッセージ*"と "*プライベートウィンドウクラス*で使用する整数メッセージ"の違いを完全に理解することはできません – kobik