通常情况下windows的控件会把消息发送给它们的父窗口,这就表示处理消息的代码必须写在父窗口中。
在MFC4.0之后,提供了新的功能message reflection,支持在Control中直接处理消息。
但是在Control中处理消息时,拦截的消息编码需要加上WM_REFLECT.例如下面
protected override void WndProc(ref Message m) {
switch (m.Msg) {
case 0x204E: // WM_REFLECT_NOTIFY
if (!this.HandleReflectNotify(ref m))
base.WndProc(ref m);
break;
}
}
这里的WM_REFLECT_NOTIFY =
WM_REFLECT +WM_NOTIFY = WM_USER+0X1C00+ 0X004E = 0X0400 + 0X1C00 + 0X004E = 0X204E