PostMessage消息发出后不等消息函数处理完就执行它的下一语句  ;SendMessage消息发出后阻塞等消息函数处理完执行它的下一语句   ;也就是说,PostMessage发送完消息后立刻返回继续执行程序;SendMessage发送完消息后等待消息处理完以后,才能返回继续执行程序.

另外,PostMessage可以被Application.OnMessage捕捉到,但是SendMessage不能被Application.OnMessage捕捉到。

下面转载一下关于  消息处理的内容:

1. TForm1::ON_RECEIVE 有没有被正确的触发 ?
  我建议你用重载 WndProc 的形式处理自定义消息,这样比较清晰:

C/C++ code
class TForm1 : public ... { ... protected: void __fastcall WndProc(Messages::TMessage &Msg); ... } void __fastcall TForm1::WndProc(Messages::TMessage &Msg) { if(Msg.Msg == ON_COM_RECEIVE) { // 处理自定义ON_COM_RECEIVE消息 } TForm::WndProc(Msg); // 默认处理 }

2. PostMessage时最好附带长度,举例:

C/C++ code
char* data_buffer = new char[len]; std::copy(data_buffer, find_ptr, len);//拷贝数据 PostMessage(_hNotifyWnd, ON_COM_RECEIVE, (WPARAM)data_buffer, len);

3. data_buffer 只能在消息处理函数中释放:

C/C++ code
void __fastcall TForm1::WndProc(Messages::TMessage &Msg) { if(Msg.Msg == ON_COM_RECEIVE) { // 处理自定义ON_COM_RECEIVE消息 char *p = (char*)Msg.WParam; Memo1->Lines->Add( AnsiString(p, Msg.LParam) ); delete p; } TForm::WndProc(Msg); // 默认处理 }

About “PostMessage” SendMessage相关推荐

  1. QT c++ 中使用PostMessage/SendMessage实例

    PostMessage是Windows API(应用程序接口) 中的一个常用函数,用于将一条消息放入到消息队列中.并且不会等待响应的线程处理消息,而是直接返回.(简单的理解就是异步). 而SendMe ...

  2. 通过PostMessage/SendMessage实现模拟键盘鼠标按键,发送不成功或出现重复按键的可参考本文

    函数原型如下: BOOL WINAPI PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); LRESULT SendMessage ...

  3. 线程安全退出 VS PostMessage,SendMessage的区别

    说明: SendMessage 函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.而函数PostMessage不同,将一个消息寄送到一个线 ...

  4. PostMessage,SendMessage,GetMessage,PeekMessage,TranslateMessage,DispatchMessage的用法集合

    SendMessage函数功能描述:将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口过程,直到窗口过程处理完消息后才返回. Postmessage函数则是将消息放入消息队列里,并立即返回. ...

  5. PostMessage,SendMessage跨不同权限进程通信

    vista之后的windows引入了UAC(用户账户控制),意味着在同一个windows用户账号下,允许用户进程在运行时拥有不同的权限级别.而且低级别的进程不能向高级别进程发送消息,完成这件事情的技术 ...

  6. GetMessage PeekMessage SendMessage PostMessage

    GetMessage () and PeekMessage () GetMessage 其唯一用途就是从事件对列中获得消息,并进行处理.当程序在等待通过 GetMessage 传递的消息时,主事件循坏 ...

  7. VC自定义消息postmessage用法(消息响应函数)

    VC 自定义消息 postmessage用法 1. 在 resource.h文件添加如下代码 定一个自己的消息 #define WM_MY_MESSAGE WM_USER + 100 //------ ...

  8. c语言调用Windows自定义消息,VC自定义消息postmessage用法(消息响应函数)

    VC 自定义消息 postmessage用法 1. 在 resource.h文件添加如下代码 定一个自己的消息 #define WM_MY_MESSAGE WM_USER + 100 //------ ...

  9. delphi 用postMessage发送字符

    演示了PostMessage, SendMessage, WM_CHAR发送汉字. 源代码: ------------------------------------------- unit Unit ...

最新文章

  1. python字符编码是什么_python3字符编码是什么?怎么用?
  2. 荷兰国旗 Flag of the Kingdom of the Netherlands
  3. java调用百度搜索_Java爬虫怎么调用百度搜索引擎,对关键字的网页爬取?
  4. web linux进程管理,详解Supervisor安装与配置(Linux/Unix进程管理工具)
  5. 关于js里的那一堆事件
  6. 数资 | 已知现期量如何求出增长量?
  7. dbutils mysql_mysql dbutils
  8. 【论文笔记】covid-19肺部感染区域分割基准
  9. Html中怎么用CSS让ul中多个li标签不换行横排显示
  10. 27 周刊 | 这周我看到的?
  11. java在浏览器打开word,如何直接在浏览器中打开word文档
  12. 畜牧业中资金问题的解决——活体贷技术和实现原理
  13. GitHub 优秀的开源项目学习
  14. 思岚科技Athena打破机器人底盘价格极限
  15. 编程小伙不想做核酸,竟伪造绿码,警察蜀黍送上 5 日行拘套餐!
  16. 参加计算机社团的英语作文,参加社团的英语作文短文欣赏
  17. java 导出mdb文件_Java生成mdb文件[MS Access文件](转载)
  18. 移动通信网络规划:毫米波技术
  19. 将excel文件中的内容转换成word文本(去表格)
  20. MicroBlaze实验_1

热门文章

  1. 【poj1006-biorhythms】中国剩余定理
  2. 使用cocoaPods一键集成第三方登录(新浪微博,qq,微信)
  3. 初识Python(1)__Python基础
  4. flex textinput 输入限制(数字、字母)
  5. qt调用opencv汇总(2)
  6. C#如何判断程序调用的exe已结束
  7. 树莓派通过VNC连接时分辨率太低
  8. Linux cd后显示文件,关于linux系统显示文件的问题!
  9. python深浅拷贝的底层理解_理解python中的深拷贝与浅拷贝
  10. cygwin swoole_swoole入门--------基础概念