本文实例讲述了VC中SendMessage和PostMessage的区别。分享给大家供大家参考。具体分析如下:
1、首先是返回值意义的区别,我们先看一下 MSDN 里的声明:
LRESULT SendMessage ( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
BOOL PostMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
PostMessage 只把消息放入队列,不管消息是否被处理就返回,消息可能不被处理;而 SendMessage 等待消息被处理完了之后才返回,如果消息不被处理,发送消息的线程将一直被阻塞。
3、sendmessage发送消息不经过消息队列,会被直接处理。但是sendmessage一直等待,知道消息被处理才返回。
4、系统只整理和编号系统消息(0 到 WM_USER 之间的消息),发送用户消息(WM_USER 以上)到别的进程时,需要自己定义。
用 PostMessage、SendNotifyMessage、SendMessageCallback 等异步函数发送系统消息时,参数里不可以使用指针,因为发送者并不等待消息的处理就返回,接受者还没处理指针就已经被释放了。
5、在 Windows 2000/XP 里,每个消息队列最多只能存放 10,000 个 Post 的消息,超过的还没被处理的将不会被处理,直接丢掉。这个值可以改得更大:[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows] USERPostMessageLimit,最小可以是 4000。
希望本文所述对大家的VC程序设计有所帮助。
发送消息到窗口或控件(SendMessage 还会等待回复)。 PostMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText] SendMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle,
本文向大家介绍vc中SendMessage自定义消息函数用法实例,包括了vc中SendMessage自定义消息函数用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了vc中SendMessage自定义消息函数用法,分享给大家供大家参考。具体如下: SendMessage的基本结构如下: 其中一些参数的由来如下: //typedef unsigned int UINT; //typede
本文向大家介绍VC中CWinThread类以及和createthread API的区别分析,包括了VC中CWinThread类以及和createthread API的区别分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了VC中CWinThread类以及和createthread API的区别分析,分享给大家供大家参考。具体分析如下: CWinThread CObject └CCmdTa
本文向大家介绍VC中SDK与MFC的区别浅析,包括了VC中SDK与MFC的区别浅析的使用技巧和注意事项,需要的朋友参考一下 本文浅析了vc中SDK与MFC的区别,对于初学VC的朋友有一定的学习借鉴价值,详情如下: SDK 是指Software Development Kit 软件开发包 MFC 是指Microsoft Foundation Classes 微软函数类库 因此MFC是对API函数的封
该插件实现了跨窗口的消息传递。现在很多浏览器都支持通过 windows.postMessage 跨窗口、跨域、跨源的消息传递,该插件就是对 windows.postMessage 方法进行简单封装,提供 jQuery 风格的调用方式。 示例代码: pm({ target: window.frames["example1"], type:"message1", data:{hello:"world"}});
VC-Logger 是一个简单易用的 C++ 程序通用日志组件。设计时着重考虑三个方面:功能、可用性和性能。为了让大家能更方便的学习 VC-Logger,特此精心制作了几个测试用例:TestGUILogger(GUI 版本测试用例 / 静态加载)、TestDynamicLogger(GUI 版本测试用例 / 动态加载)、TestConsoleLogger(Console 版本测试用例 / 静态加载