关于消息?(50分)

  • 主题发起人 主题发起人 QianQi
  • 开始时间 开始时间
Q

QianQi

Unregistered / Unconfirmed
GUEST, unregistred user!
type
; TMsg=pakced record
; hwnd:HWND;
; message:UINT;
; wParam:WPARAM;
; lParam:LPARAM;
; time:DWORD;
; pt:TPoint;
end;
其中的wParam和lParam这两个参数我搞不清楚它们到底有什么用?该什么时候用?为什么一般
它们都赋值为0?最好能举例说明,不要泛泛而谈,如什么存放一些数据什么的!

还有就是经过Delphi映射后的消息记录,例如

; TWMMDICreate = packed record
; ; Msg: Cardinal;
; ; Unused: Integer;
; ; MDICreateStruct: PMDICreateStruct;
; ; Result: Longint;
; end;
能否详细解说一下其中的Result
 
没人回答吗?[8D]
 
是不是问题太简单了,还是嫌分数太少了,
不想来讨论啊?
 
我也问了同样的问题,没有人能说得清楚,最好的回答是找一本<Delphi5开发指南>的书。
看来明天得去买回来。靠自己吧!
 
真是同命相连啊[:(][^]
 
这不应该单独提出来说,要看你具体用到的消息而言的:
比如你要用到 wm_KeyDown,那么你就去查 wm_KeyDown 的帮助,上面就有 wParam和lParam 分别应该取什么值的说明
再比如你要用 wm_KeyUp, 那么你又要去查该消息的帮助,上面也后 wParam和lParam 的取值说明

也就是说 wParam 和 lParam 是视不同的消息而不同的,不能笼统的讲。
 
beta讲得也不清楚啊[^]
 
lparam 和 wparam是你发送给目标程序所需要传递的参数,根据发送的消息不同而不同。
有的消息不需要参数,如WM_Close,则两个参数设置为0,有的需要设置参数,如WM_KeyDown,
WM_KEYDOWN ;
nVirtKey = (int) wParam; ; ;// virtual-key code
lKeyData = lParam; ; ; ; ; ;// key data
所以beta说根据不同消息不同的。
 
对于SendMessage,发送出去可以等待返回值,这个Result就是返回值的。
对于标准的Windows消息,基本都存在返回值。可以根据这个返回值判断消息是否执行成功。
当然,你可以自己定义消息,在两个程序或者一个程序内部来发送/接收,这样,你就可以自己定义处理返回值了。
 
wparam,lparam是消息的附加信息,
好比命令一个人“走”,他往哪个方向怎么走?就由附加信息来得到
每个消息的附加信息都是已经确定的,这个你可以在帮助里查到
而在自定义消息里,你可以自己制定规则
 
wParam lParam 均为消息类型,具体取决于消息!
lParam往往是依据wParam参数的不同而不同, wParam往往为前一消息。
一个消息由该消息所属的窗口(hwnd)、消息编号(message)、消息的 WPARAM 型参数(wParam)
以及消息的 LPARAM 型参数(lParam)组成。消息的两个参数中包含了重要的内容。比如,对鼠标
消息而言,lParam 中一般包含鼠标的位置信息,而 wParam 参数中则包含发生该消息时,对应的
SHIFT 键的状态信息等。对其他不同的消息类型来讲,wParam 和 lParam 也具有明确的定义。当然,
用户也可以自定义消息,并定义消息的 wParam 和 lParam 意义。
如 SenMessage(Button.Handle,BM_SETSTYLE,BS_RADIOBUTTON,1);
其中wParam为BS_RADIOBUTTON,lParam为1。上面的效果是一个录音机按钮!

至于Result的意义就是一个Longint类型,具体含义要视具体应用环境而言!
 
同意yzhshi
 
[:D]多谢大家了,大家讲的都不错,但我还想再听听其他人的意见,稍后给分![:D]
 
多人接受答案了。
 

Similar threads

后退
顶部