由MSDN:The message is posted/send 所想到的几个关于消息的问题~问题多多~~高人请解答!!!
真的希望第3 第4个问题得到解答,已经困扰我好久了 真难受~~
谢谢
The WM_KEYDOWN message is posted to the window………
The WM_CREATE message is sent when ………
1.post/send 这是不是Windows 默认 处理它们的形式?
2.是否注释为post 的 消息就不能用 send,注释为send的就不能用post ?
如果怎样用 岂不是和windows的原理 相矛盾?
3.一直想用SendMessage 发送 WM_KEYDOWN消息,但是一直不成功,这是为什么?
如果你们有 成功的例子能否给我发一份^_^
4.我怎么知道消息被成功执行?所谓的PreTranslateMessage 和HOOK都是在消息执行前
拦截,我需要的是在消息成功执行后,得到成功执行的状态,再执行下一条语句~
附代码 :我要在 模拟执行按键后 再执行SendMessage~~但以下代码不能实现
期待高人解答
code:
我需要的是先模拟按键成功执行之后,再执行SendMessage中的COPYDATA里的命令
adsw_acadMainWnd()得到为 CAD 的主窗口
但以下段代码产生的结果是 先执行的SendMessage 再模拟按键。
::keybd_event( VK_ESCAPE, 0, 0, 0);
::keybd_event( VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0);//用POSTMESSAGE产生一样的效果
COPYDATASTRUCT cmdMsg;
.........
::SendMessage(adsw_acadMainWnd(),
WM_COPYDATA,
(WPARAM)adsw_acadMainWnd(),
(LPARAM)&cmdMsg);
而以下段代码产生的结果是 不响应模拟按键。
::SendMessage(adsw_acadMainWnd(),
WM_KEYDOWN,
VK_ESCAPE,
0x001c0001);
::SendMessage(adsw_acadMainWnd(),
WM_KEYUP,
VK_ESCAPE,
0xc01c0001);
COPYDATASTRUCT cmdMsg;
....
::SendMessage(adsw_acadMainWnd(),
WM_COPYDATA,
(WPARAM)adsw_acadMainWnd(),
(LPARAM)&cmdMsg);
高手救命