大家都知道PostMessage会丢消息,但是消息队列的大小是多少呢,下面做了一个测试。

代码:
 
 1 unit Unit1;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, StdCtrls;
8
9 const
10 UM_ADD = WM_USER + 100;
11
12 type
13 TForm1 = class(TForm)
14 Label1: TLabel;
15 procedure FormCreate(Sender: TObject);
16 private
17 FVal: Integer;
18 procedure OnMsgAdd(var Msg: TMsg); message UM_ADD;
19 public
20 { Public declarations }
21 end;
22
23 var
24 Form1: TForm1;
25
26 implementation
27
28 {$R *.dfm}
29
30 procedure TForm1.FormCreate(Sender: TObject);
31 var
32 i: Integer;
33 begin
34 for i:=0 to 1000000 do
35 PostMessage(Handle, UM_ADD, 0, 0);
36 end;
37
38 procedure TForm1.OnMsgAdd(var Msg: TMsg);
39 begin
40 Inc(FVal);
41 Label1.Caption := IntToStr(FVal);
42 end;
43
44 end.

XP下运行结果:

可见,消息队列的默认长度是10000(在WIN7下运行结果是9998),队列满后消息将被丢弃。
 
如果把代码中的PostMessage改成SendNotifyMessage,运行后过了一段时间,窗口弹出:
 
所以,功能类似的SendNotifyMessage不会丢掉消息,必要时可以用它代替PostMessage。
上面的结论是错误的,SendNotifyMessage并没有那么神奇,上面的例子没有丢失消息的原因是因为
SendNotifyMessage发消息给同线程创建的窗口时,采用的是直接调用窗口函数的方式,换句话说
就是在执行SendMessage。
 
http://www.cnblogs.com/ddgg/archive/2013/03/31/2991595.html

最新文章

  1. WebAPI2使用AutoFac依赖注入完整解决方案。
  2. CSS 通用和分组选择器(十)
  3. [CareerCup] 7.5 A Line Cut Two Squares in Half 平均分割两个正方形的直线
  4. CentOS6 搭建git
  5. vedeo与audio标签的使用
  6. Unix和Linux下C语言学习指南
  7. Duanxx的Design abroad: C++矩阵运算库Eigen 概要
  8. nodemailer中的几个坑
  9. redis 扩展下载
  10. SharePoint 2016 每天预热脚本介绍
  11. 2018-03-03-解决win下凭据删除不干净而无法登录共项目录的问题
  12. 元素定位-XPATH定位方法总结
  13. RBAC权限管理模型 产品经理 设计
  14. [转]Google的C++代码规范
  15. webstorm破解版
  16. python——数字问题之_ 变量
  17. HDU 5919 Sequence II(主席树+区间不同数个数+区间第k小)
  18. SVM的代码实现-python
  19. iOS 10 的一个重要更新-线程竞态检测工具 Thread Sanitizer
  20. ZEDGRAPH画图心得,SQL语句构造!!!

热门文章

  1. [Docker] Run Short-Lived Docker Containers
  2. css3-7 如何让页面元素水平垂直都居中(元素定位要用css定位属性)
  3. Linux快捷键、文件管理和查询
  4. Django之分页显示文章
  5. 小强的HTML5移动开发之路(53)——jQueryMobile页面间参数传递
  6. Android bitmap绘制文字自动换行
  7. 封装springmvc处理ajax请求结果
  8. [RxJS] Use groupBy in real RxJS applications
  9. FullPage.js全屏滚动插件解说
  10. OpenGL学习一