如题,主窗体中消息处理过程是procedure Message9999(var Msg:TMsg); message WM_PASSWORD;
我在子窗体中调用SendMessage(TForm(Owner).Handle,WM_PASSWORD,1,0); 主窗体中可以收到这个消息,可是在Message9999过程的Msg结构中的wparam值不等于1,反而是Msg.message域等于我传递的wparam,请问各位这是什么原因?谢谢
我在子窗体中调用SendMessage(TForm(Owner).Handle,WM_PASSWORD,1,0); 主窗体中可以收到这个消息,可是在Message9999过程的Msg结构中的wparam值不等于1,反而是Msg.message域等于我传递的wparam,请问各位这是什么原因?谢谢
TMsg=Packed Record
HWnd:HWND;//窗口句柄
Message:UNIT;//消息常量标示符
WParam:WPARAM;//32位消息的特定附加信息
LParam:LPARAM;//32位消息的特定附加信息
time:DWORD;//消息创建时间
pt:TPoint;//消息创建时的鼠标坐标位置
end;
我在Watch中看到(1124,1,0,0……)也就是HWnd对应我的Message,Message对应我的wParam
不能这样定义的, 这个结构体必须符合API的约定, 不可以加入自定义的内容的, 直接使用Messages单元中的TMessage结构体吧。
TMessage = packed record
Msg: Cardinal;
case Integer of
0: (
WParam: Longint;
LParam: Longint;
Result: Longint);
1: (
WParamLo: Word;
WParamHi: Word;
LParamLo: Word;
LParamHi: Word;
ResultLo: Word;
ResultHi: Word);
end;