1

WM_NOTIFYのドキュメントは簡単に見つけるWM_REFLECT_NOTIFYことができますが、ドキュメントを見つけることができない、を参照するかなりの量のサンプルコードと記事を見つけています。

とは何ですかWM_REFLECT_NOTIFY、そのドキュメントはどこにありますか?このメッセージはどのように異なりWM_NOTIFYますか?

参照例:

4

1 に答える 1

3

WM_REFLECT_NOTIFYの値0x204E、つまり0x2000+を持つと呼ばれますWM_NOTIFY。メッセージリフレクションの一般的な使用法は、おそらくサブクラス化されたコントロールが通知自体を処理できるように、通知を発信元に送り返すことです。

したがって、不足している可能性があり、ドキュメントを探しているという知識は、コントロールWM_NOTIFYが通常の方法でその親に送信するということです。そして、親はメッセージ番号+元SendMessageのを使用して、同じメッセージパラメータをコントロールに戻します。パラメータの意味は、元のメッセージと同じであると想定されています(あなたの場合)。0x2000MsgwParamlParamWM_NOTIFY

定数0x2000は、フレームワークごとに異なる可能性があります。そうでない場合は、コントロールとホスティングウィンドウ間のプライベートな合意である可能性があります。

たとえば、MFCおよびActiveXコントロールは、メッセージを反映してWM_NOTIFYメッセージを作成しOCM_NOTIFYます。ここで、(olectl.h):

#define OCM_NOTIFY            (OCM__BASE + WM_NOTIFY)
#define OCM__BASE           (WM_USER+0x1c00)

そして最後に(winuser.h):

#define WM_USER                         0x0400

つまり、OCM_NOTIFY0x204E、あなたと同じWM_REFLECT_NOTIFYです。ここからのものに関するMSDNドキュメント:リフレクトウィンドウメッセージID

于 2012-05-17T14:41:25.627 に答える