MFC中SendMessage和PostMessage两种发送消息用法
2013-03-30 00:20
603 查看
前一段时间做项目,用到消息响应机制,为了记忆,特发与此!待事件充裕之时再进行整理。
1.可通过SendMessage或PostMessage发送消息;
SendMessage是发送消息之后待消息响应执行完才返回;而PostMessage将消息发送出去之后就立刻返回。
2.两种消息的原型:
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam)
各参数含义:
hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
Msg:指定被发送的消息。
wParam:指定附加的消息特定信息。
IParam:指定附加的消息特定信息。
返回值:返回值指定消息处理的结果,依赖于所发送的消息。
B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)
各参数含义:
hWnd:其窗口程序接收消息的窗口的句柄。
可取有特定含义的两个值:
(1)HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、 被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口
(2)NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
例如:(发送消息)
3.消息响应
4.在消息接收端将消息ID和消息响应联系起来
1.可通过SendMessage或PostMessage发送消息;
SendMessage是发送消息之后待消息响应执行完才返回;而PostMessage将消息发送出去之后就立刻返回。
2.两种消息的原型:
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam)
各参数含义:
hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
Msg:指定被发送的消息。
wParam:指定附加的消息特定信息。
IParam:指定附加的消息特定信息。
返回值:返回值指定消息处理的结果,依赖于所发送的消息。
B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)
各参数含义:
hWnd:其窗口程序接收消息的窗口的句柄。
可取有特定含义的两个值:
(1)HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、 被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口
(2)NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
例如:(发送消息)
#define WM_TESTSENDMSG WM_USER+200//给消息一个ID CString str="TEST"; CWnd *pWnd=CWnd::FindWindow(NULL,str);//得到窗口句柄 if(pWnd) { pWnd->SendMessage(WM_TESTSENDMSG,1,0);//向窗口发送消息或者pWnd->PostMessage(WM_TESTSENDMSG,1,0) }
3.消息响应
void Cxxxxx::OnReciveMessage(WPARAM wParam,LPARAM lParam) { //功能代码 }
//*.h文件声明 afx_msg void OnReciveMessage(WPARAM wParam,LPARAM lParam);
4.在消息接收端将消息ID和消息响应联系起来
BEGIN_MESSAGE_MAP(CXXXDlg, CDialog) //{{AFX_MSG_MAP(CXXXDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() //}}AFX_MSG_MAP ON_MESSAGE(WM_TESTSENDMSG,OnReciveMessage)//将消息ID和响应联系 END_MESSAGE_MAP()
相关文章推荐
- MFC中SendMessage和PostMessage两种发送消息用法
- MFC发送消息函数PostMessage(异步)和SendMessage(同步)的异同
- MFC发送自定义消息-PostMessage和SendMessage
- MFC SendMessage或PostMessage发送自定义消息
- MFC中发送自定义消息机制,PostMessage和SendMessage方式
- SendMessage和PostMessage发送windows消息的区别
- MFC使用SendMessage()发送自定义消息实现进程间通信
- Qt实现类似sendmessage和postmessage发送自定义消息
- MFC窗口消息PostMessage和SendMessage
- MFC使用SendMessage()发送自定义消息实现进程间通信
- 如何用sendmessage(postmessage)往webbrowse里发送鼠标消息
- MFC 如何获取各类窗口的句柄并用PostMessage发送消息
- MFC使用SendMessage()发送自定义消息实现进程间通信
- C# 发送消息SendKeys、SendMessage、keybd_event的用法
- [VC]SendMessage和PostMessage发送消息(不同进程传递字符串)
- VC++ 添加自定义消息响应函数以及发送消息SendMessage投递消息PostMessage的简单测试
- MFC使用SendMessage发送自定义消息实现进程间通信
- MFC中不同对话框间使用SendMessage发送自定义消息的具体实现
- SendMessage和PostMessage发送消息(不同进程传递字符串)
- MFC使用SendMessage()发送自定义消息实现进程间通信