VC++/MFC中用PostMessage发送鼠标点击事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC++/MFC中用PostMessage发送鼠标点击事件相关的知识,希望对你有一定的参考价值。

假设一个窗口句柄为1234,我想在此窗口最小化后,仍能实现点击确定键按钮(假设这个键的坐标为100,100)函数原型:B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);PostMessage(1234, WM_LBUTTONDOWN, ???, ???);后面2个参数怎么填? 怎么把坐标值也一块发送出去?要求 窗口最小化后,仍能实现,喊我用mouse_event的就不要来了。。。

参考技术A 即使窗体最小化了 这个窗口的句柄仍然存在 所以你向它投递消息是没有问题的 但是要首先得到这个"确定按钮"的句柄 因为这个按钮也是个窗口 坐标嘛 自己开动脑筋吧 参考技术B 用CALL.最好用. 参考技术C 第一个是句柄,后面你值零试试

MFC中的SendMessage和PostMessage

SendMessage的函数声明

声明:

WINUSERAPI
BOOL
WINAPI
PostMessageA(
    _In_opt_ HWND hWnd,
    _In_ UINT Msg,
    _In_ WPARAM wParam,
    _In_ LPARAM lParam);
WINUSERAPI
BOOL
WINAPI
PostMessageW(
    _In_opt_ HWND hWnd,
    _In_ UINT Msg,
    _In_ WPARAM wParam,
    _In_ LPARAM lParam);
#ifdef UNICODE
#define PostMessage  PostMessageW
#else
#define PostMessage  PostMessageA
#endif // !UNICODE

参数解释:
hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
Msg:指定被发送的消息。
wParam:指定附加的消息特定信息。
IParam:指定附加的消息特定信息。
返回值:
返回值指定消息处理的结果,依赖于所发送的消息。

PostMessage的函数声明

声明:

B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)

参数说明:
hWnd:其窗口程序接收消息的窗口的句柄。
可取有特定含义的两个值:
(1)HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、 被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口
(2)NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:
如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。

它们的作用与区别

SendMessage将消息直接发送给窗口,并调用窗口过程进行处理。在窗口过程队消息处理完毕后,该函数才返回(SendMessage发送消息不进队列消息)。
PostMessage函数将消息放入与创建窗口的线程相关联的消息队列后立即返回。
都可以调用GetLastError函数获取错误信息。

以上是关于VC++/MFC中用PostMessage发送鼠标点击事件的主要内容,如果未能解决你的问题,请参考以下文章

在VC中用PostMessage()发送消息,为啥会发送失败?

在VC6.0做的MFC程序,如何在BS中用浏览器打开

VC/MFC怎样给菜单项添加勾啊

VC/MFC啥是逻辑坐标

基于VC/MFC 的UDP广播,我怎么接受返回的数据包

MFC/VC 在多文档MDI程序中 子窗口初始最大化显示 如何去掉菜单栏右侧的最小化及向下还原按钮