讲解一下postmessage!(50分)

  • 主题发起人 主题发起人 chunfly
  • 开始时间 开始时间
C

chunfly

Unregistered / Unconfirmed
GUEST, unregistred user!
BOOL PostMessage(
HWND hWnd, // handle of destination window
UINT Msg, // message to post
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
对WPARAM 和 LPARAM 不懂,请讲解一下WPARAM 和 LPARAM!
如下代码,为什么不同而实现相同功能?
PostMessage(edit1.handle,wm_keydown,vk_return,1);
PostMessage(edit1.handle,wm_nextctrl,0,0);
 
怎么?分数少吗?
还是没有??
 
WPARAM,LPARAM的意义据Msg内容而定,也就是应用在处理Msg时可以使用的传入参数,就拿
你“PostMessage(edit1.handle,wm_keydown,vk_return,1);”例子解释如下:
这是发一个wm_keydown的消息给edit1这个窗体的
当消息为WM_KEYDOWN时,后两个参数的意义如下:
nVirtKey = (int) wParam
// virtual-key code
lKeyData = lParam
// key data
其中lparam当值在0~15时意义为重复次数
这里wParam为vk_return,lparam为1
也就是在edit1中按一次return键的效果,我这样讲不知你能否明白
 
PostMessage将一条消息发送到指定窗口的消息队列,但是它不需要等该消息的返回,
这是他和sendmessage的区别,

WPARAM 和 LPARAM 是消息的两个参数,具体含义由当前消息确定。
例如 PostMessage(edit1.handle,wm_keydown,vk_return,1);是指向edit1发送
wm_keydown类型的消息,而发送消息的值是vk_return,相当于当光标在edit1上时按一下
回车键所产生的效果

PostMessage(edit1.handle,wm_nextctrl,0,0);
 
to brokensun, sxbrf
谢谢你们的答复
我想问一点
”WPARAM,LPARAM的意义据Msg内容而定,也就是应用在处理Msg时可以使用的传入参数“
我在处理消息时如何根据Msg得到要传入的WPARAM 和 LPARAM ?

当消息为WM_KEYDOWN时,后两个参数的意义如下:
nVirtKey = (int) wParam
// virtual-key code
lKeyData = lParam
// key data
而对于其他的消息,难道其两个参数的意义也如下:
nVirtKey = (int) wParam
// virtual-key code
lKeyData = lParam
// key data

呵呵,小弟是在^_^
 
to brokensun
lKeyData = lParam
// key data
其中lparam当值在0~15时意义为重复次数
难道如果lParam=0此消息不发生,而lParam=1发生一次??
但是我试过lParam=0和lParam=2的效果仿佛一样啊?


 
呵呵,你很认真(当然我也很惭愧),在MSG为WM_KEYDOWN时,lParam取值为0~15时,lParam
重复次数,从你试的角度:重复0次和重复2次若没有事件处理的情况下是一样的,若你在edit1
的keypress事件中响应,应该就能体会到了,在回答你的问题时,我是想当然的去答了,对不起,
我没有去试一下
---“我在处理消息时如何根据Msg得到要传入的WPARAM 和 LPARAM ?”
你可以根在win32.Hlp中去查各个Msg对应的两个参数的意义
 
brokensun说的没错,
至于WPARAM 和 LPARAM 两个参数的具体含义得由当前消息确定。
具体表示什么可以参考Win32 SDK Reference或MSDN,上面描述的很详细
 
谢谢两位大虾
 
多人接受答案了。
 

Similar threads

后退
顶部