SendMessage的简单问题!!!
发送方
const
WM_TEST = WM_USER + 20;
procedure TTbc.Button1Click(Sender: TObject);
var
a: HWND;
begin
a := FindWindow( 'TTabc ', nil);
SendMessage(a, WM_TEST, 100, 0);
end;
接收方:
const
WM_TEST = WM_USER + 20;
procedure Test(var Msg: TMsg);message WM_TEST;
procedure TTabc.Test(var Msg: TMsg);
begin
ShowMessage(Format( 'message:%d; Wparam:%d; Lparam:%d ',
[Msg.message, Msg.wParam, Msg.lParam]));
nd;
___________________________________________________
问题是我接收到的时候,为什么100是存放在Msg.message里了?而不是Msg.wParam
!但是当我SendMessage(a, WM_TEST, 0, 1000)时Msg.wParam就能收到,这好像和SendMessage的帮助里说的不同???
[解决办法]
不知道为什么。自定义消息是从wm_user+100开始的
[解决办法]
procedure TTabc.Test(var Msg: TMsg);
把这个改成
procedure TTabc.Test(var Msg: TMessage);
注意二者得区别
tagMSG = packed record
hwnd: HWND;
message: UINT;
wParam: WPARAM;
lParam: LPARAM;
time: DWORD;
pt: TPoint;
end;
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;
[解决办法]
用TMessage阿