×

postmessage

postmessage(PostMessage函数)

admin admin 发表于2024-05-21 13:14:57 浏览23 评论0

抢沙发发表评论

“postmessage”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看postmessage(PostMessage函数)!

本文目录

PostMessage函数

函数功能:该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage和PeekMessage取得。 函数原型:B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); 参数 hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值: HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。 NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样。 Msg:指定被寄送的消息。 wParam:指定附加的消息特定的信息。 IParam:指定附加的消息特定的信息。 返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。 备注:需要以 HWND_BROADCAST方式通信的应用程序应当用函数 RegisterwindwosMessage来获得应用程序间通信的独特的消息。 如果发送一个低于WM_USER范围的消息给异步消息函数(PostMessage.SendNotifyMessage,SendMesssgeCallback),消息参数不能包含指针。否则,操作将会失败。函数将再接收线程处理消息之前返回,发送者将在内存被使用之前释放。 速查:Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。 P.S. 为什么 “如果发送一个低于WM_USER范围的消息给异步消息函数(PostMessage.SendNotifyMessage,SendMesssgeCallback),消息参数不能包含指针。否则,操作将会失败。HTML5标准下的postMessage 在HTML5中新增了postMessage方法,postMessage可以实现跨文档消息传输(Cross Document Messaging),Internet Explorer 8, Firefox 3, Opera 9, Chrome 3和 Safari 4都支持postMessage。 可以通过绑定window的message事件来监听发送跨文档消息传输内容。

PostMessage用法

  • 主要是环境配置的问题, 在程序的最前端#include之后增加下面的句子,然后再试试。using namespace std;

  • MFC版本问题 PostMessage(AfxGetMainWnd()-》m_hWnd,(WM_USER+100),0,(LPARAM)EV_RXCHAR);改为:::PostMessage(AfxGetMainWnd()-》m_hWnd,(WM_USER+100),0,(LPARAM)EV_RXCHAR); 试试看

PostMessage 是如何实现的

首先定义一个全局的句柄 HWND GWnd_MydlgWND;// 其次在你需要响应的窗口下(class CTestDlg : public CDialog)声明为外部引用 extern HWND GWnd_MydlgWND; 同时在该类下重载虚函数DefWindowProc ,用于接收消息LRESULT CTestDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class switch(message) { case 0x401:MessageBox("测试程序"); break; } return CDialog::DefWindowProc(message, wParam, lParam); } 再次是在你想要获得消息的窗口初始化函数(BOOL CTestDlg::OnInitDialog())中添加 // TODO: Add extra initialization here GWnd_MydlgWND = GetSafeHwnd(); 准备完毕 然后在你想要发送消息的地方发送 ::PostMessage(GWnd_MydlgWND,0x401,0L,0L);//寄送消息

PostMessage

msdn啊,比如说PostMessage它就说的比较清楚,它和SendMessage的不同在于它发送消息后就立即返回,不等该消息的后续动作,然后消息进行响应了后会再通知它,而SendMessage就会一直在那等,所以一般情况下MSDN会建议用PostMessage的

关于postmessage和PostMessage函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。