再问一次Tmessage的问题。 ( 积分: 5 )

  • 主题发起人 主题发起人 mill666
  • 开始时间 开始时间
M

mill666

Unregistered / Unconfirmed
GUEST, unregistred user!
我想定义一个发送错误信息的消息类;就比如定义如下;
THints = packed record
Msg: Cardinal;
Keys: Longint;
errmsg:string;
Result: Longint;
end;

消息名为: CM_ERRMSG;
其中errmsg为要发送的错误信息。
请问应当怎么定义,怎么给参数赋值,怎么调用sendmessage函数??
 
我想定义一个发送错误信息的消息类;就比如定义如下;
THints = packed record
Msg: Cardinal;
Keys: Longint;
errmsg:string;
Result: Longint;
end;

消息名为: CM_ERRMSG;
其中errmsg为要发送的错误信息。
请问应当怎么定义,怎么给参数赋值,怎么调用sendmessage函数??
 
建议:
TCMErrMsg = packed record
Msg: Cardinal;
Keys: Longint;
errmsg:string;
Result: Longint;
end;
调用:
SendMessage(Handle, CM_ERRMSG,WPARAM,LPARAM );
第一个参数为响应的句柄,第二个参数为消息常量,后两个是左右参数,具体调用参照Delphi的帮助文件.
 
如果消息要跨进程的话,你的String就麻烦了.如果在同一个进程下面,你可以直接使用string或者pchar
如果是使用SendMessage函数,你不必定义这个结构的.直接使用SendMessage(Handle, CM_ERRMSG,WPARAM,LPARAM );就可以,只是你使用delphi消息方法接收的时候,要注意delphi把消息包装成TMessage结构了.这个结构里面就包含了WPARAM,LPARAM两个参数了
 
请问大侠们,关键的问题是我要怎么把要传送的信息errmsg打包到sendmessage的WPARAM或者LPARAM中??
 
我也想了解相关情况,请大侠们详细讲解一下
 
比如你把一个Button对象放进去
var
B:TButton;
begin
b:=TButton.create(nil);
b.caption:='df';
SendMessage(Handle, CM_ERRMSG,longint(B),LPARAM );
end;

procedure myMessage(var msg:Tmessage);
var
B:TButton;
begin
B:=TButton(msg.WParam);
showmessage(B.caption);
end;
我没试过,应该是这样的
 
楼上写得好啊
 
后退
顶部