首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

SendMessage的简单有关问题!

2012-04-03 
SendMessage的简单问题!!!发送方constWM_TESTWM_USER+20procedureTTbc.Button1Click(Sender:TObject)va

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阿

热点排行