MFC SendMessage函
时间: 2023-12-15 08:06:30 浏览: 204
引用\[1\]:SendMessage用于调用指定窗口的内部程序,直到窗口程序处理完成以后再返回; PostMessage是将一个消息寄送到一个窗口内的消息队列后就立即返回。\[1\]两个函数的返回值不同: LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); BOOL PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);\[1\]引用\[2\]:本示例先通过RegisterWindowMessage函数来注册一条消息,然后用Win32 API函数SendMessage()发送。\[2\]主程序端: 建立MFC对话框,添加一个按钮 在对话框CPP文件预处理下加入下面代码: static UINT NEAR WM_RGSMSG=RegisterWindowMessage("MESSAGE");//注册一条发送MESSAGE的自己注册的消息 在按钮单击事件函数中添加后: void CMyDlg::OnButton1() { // TODO: Add your control notification handler code here HWND hwnd=::FindWindow(NULL,"接受窗口");//找到我们要发送消息的窗口句柄 if(hwnd==NULL) { AfxMessageBox("没有找到接受窗口"); return; } else ::SendMessage(hwnd,WM_RGSMSG,1,0);//发送消息 }\[2\]引用\[3\]:SendMessage函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。\[3\]
问题: MFC SendMessage函数和PostMessage函数有什么区别?
回答: MFC中的SendMessage函数和PostMessage函数都用于向指定窗口发送消息,但它们有几个区别。首先,SendMessage函数会调用指定窗口的内部程序,并在窗口程序处理完消息后才返回,而PostMessage函数则是将消息寄送到窗口的消息队列后立即返回。\[1\]其次,两个函数的返回值不同,SendMessage函数的返回值是LRESULT类型,而PostMessage函数的返回值是BOOL类型。\[1\]最后,使用SendMessage函数发送消息时,需要确保目标窗口存在并且可用,否则会返回错误信息。而使用PostMessage函数发送消息时,即使目标窗口不存在或不可用,也不会返回错误信息。\[3\]
#### 引用[.reference_title]
- *1* [【MFC】SendMessage与PostMessage](https://blog.csdn.net/qq_45662588/article/details/121417438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [MFC的SendMessage函数详解](https://blog.csdn.net/NUPTboyZHB/article/details/7370463)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文