Windows消息【一】 消息队列】的更多相关文章

转载出处:http://blog.csdn.net/bichenggui/article/details/4677494  windows消息和消息队列 与基于MS - DOS的应用程序不同,Windows的应用程序是事件(消息)驱动的.它们不会显式地调用函数(如C运行时库调用)来获取输入,而是等待windows向它们传递输入. windows系统把应用程序的输入事件传递给各个窗口,每个窗口有一个函数,称为窗口消息处理函数.窗口消息处理函数处理各种用户输入,处理完成后再将控制权交还给系统.窗口消…
windows消息和消息队列 转自:http://blog.163.com/zhangjie_0303/blog/static/990827062010113062446767/ 与基于MS - DOS的应用程序不同,Windows的应用程序是事件(消息)驱动的.它们不会显式地调用函数(如C运行时库调用)来获取输入,而是等待windows向它们传递输入. windows系统把应用程序的输入事件传递给各个窗口,每个窗口有一个函数,称为窗口消息处理函数.窗口消息处理函数处理各种用户输入,处理完成后再…
Windows运行机理这系列文章都是来至于<零基础学Qt4编程>——吴迪,个人觉得写得很好,所以进行了搬运和个人加工 Windows程序设计时一种基于消息的时机驱动方式的设计模式,完全不同于传动的DOS方式的程序设计方法,在Windows中,编程的框架都是响应和发送消息.例如,当用户在窗口中画图的时候,按下鼠标左键,此时操作系统会感知这一事件,于是将这个事件包装成一个消息,投递到应用程序的消息队列中,然后应用程序从消息队列中取出消息并响应,在这处理过程中,操作系统也给应用系统发送消息,所谓的“…
键盘消息 Windows系统无论何时只有一个窗口(可能是子窗口,也就是控件)能获得焦点. 焦点窗口通过windows消息来响应人的键盘操作,与键盘相关的常用消息罗列如下: WM_KEYDOWN   按下键 WM_KEYUP         松开键 WM_SYSKEYDOWN   按下系统键(Alt) WM_SYSKEYUP         松开系统键 WM_CHAR  按下松开后WINDOWS产生的字符消息  (A B C D ...) WM_SYSCHAR  按下松开后WINDOWS产生的系统…
一 .小记; PostQuitMessage(0); 产生WM_QUIT消息给进程队列,且立即返回,同时使得消息循环退出,使得进程终止.(其实它通过PostMessage(hWnd,WM_QUIT,0,0)发送消息) MoveWindow();//移动窗口 BOOL  MoveWindow( HWND hWnd,      // 窗口句柄 int X,          // 水平位置   int Y,          // 垂直位置   int nWidth,     // 宽度   int…
焦点窗口:接收到这个键盘事件的窗口称为有输入焦点的窗口.具有输入焦点的窗口要么是活动窗口,要么是活动窗口的子孙窗口. 活动窗口:活动窗口通常是很好鉴别的.它总是最上层的窗口——也就是说,它的父窗口句柄是NULL. 系统消息队列 & 应用程序消息队列 当用户按下和释放键盘上的一个键时,Windows和键盘设备驱动程序将硬件扫描码转换为格式化后的消息.但是,这些消息并不立即被放入应用程序消息队列,而是由Wimdows把这些消息存储在系统消息队列中.系统消息队列是一个单独的消息队列,它被 Window…
说起消息重入队列还得从队列注册消费者说起,客户端在向队列注册消费者之后,创建的channel也会被主队列进程monitor,当channel挂掉后,主队列进程(rabbit_amqqueue_process)收到'DOWN'通知,将未ack的消息重入队列,并根据消息的deliver tag,也就是消费入队列的顺序,将消息重入队列中 主要代码如下: 1.注册消费者 handle_method(#'basic.consume'{queue = QueueNameBin, consumer_tag =…
下面的代码是介绍如何在windows平台发消息到非UI线程. 主要是'PeekMessage || GetMessage' 这两个API的应用. 当他们被调用的时候,如果当前线程还没有消息循环,就会创建一个.利用这个特性比自己手动的去创建一个消息循环要方便得多. 发消息主要是使用线程PostThreadMessage #include <iostream> #include <string> #include "cassert" #include "w…
系统关闭窗体的事件顺序为: OnCloseQuery ----> OnClose ----> OnDestroy 下面的代码说明问题: unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm3 = class(TForm) procedure FormCloseQuery(Sender: TObject; v…
'========================================'WINDOWS特有的消息常量标识符'========================================Public Const WM_NULL = &H0&Public Const WM_CREATE = &H1& '应用程序创建一个窗口Public Const WM_DESTROY = &H2& '一个窗口被销毁Public Const WM_MOVE = &…
日志消息 日志队列可以保存你操作过的消息的备份.它的好处是,一但发现前面的操作失败,可以从日志队列中重新创建出原先的消息对象,然后再进行操作. 例如,向远方发送一个消息对象,然后对方返回一个失败的确认.我们可以从失败确认消息中提取出一个和开始发送的消息相关的ID值,然后根据提出的ID值从日志队列中找到发送的消息, 重新创建一个消息对象,并再次发送.在.net中,我们使用 ReceiveByCorrelationID 或 PeekByCorrelationID 方法根据 CorrelationD …
开发十年,就只剩下这套Java开发体系了 >>>   创建队列时指定参数 队列属性:x-message-ttl 可以控制被publish到queue中的message 被丢弃前能够存活的时间,当某个message在queue 存留的时间超过了配置的TTL值 我们就说该message“已死”.值得注意的是,当一个message被路由到多个queue中时,其可以在不同的时间死掉,或者可能有的不会出现死掉的情况.(在某个queue中的某个message的 死亡不会对相同message在其他qu…
近期在做winCE系统的扫描枪应用程序,遇到了一些问题,其中包括消失提示框在手持终端显示过小, 用户要求提示框提示几秒后自动关闭,Windows平台可以通过调用系统API以定时器的方式进行自动销毁. 不过在winCE上存在不同,由于winCE系统属于精简版的windows系统,所以在API上也是属于精简后的, Windows平台销毁消息框用user32.dll中的FindWindow和PostMessage完成,而winCE平台并没有 user32.dll,不过对应的API在coredll.dl…
接上文的集群模式,监听器返回RECONSUME_LATER,需要将将这些消息发送给Broker延迟消息.如果发送ack消息失败,将延迟5s后提交线程池进行消费. 入口:ConsumeMessageConcurrentlyService#sendMessageBack 命令编码:RequestCode.CONSUMER_SEND_MSG_BACK: MQClientAPIImpl#consumerSendMessageBack: public void consumerSendMessageBac…
前言 前段时间写过一篇: # RabbitMQ:消息丢失 | 消息重复 | 消息积压的原因+解决方案+网上学不到的使用心得 很多人加了我好友,说很喜欢这篇文章,也问了我一些问题. 因为最近工作比较忙,隔了一段时间没写,忙完后专门花时间把RabbitMQ剩下的一个重要技术点通过案例的方式整理出来,就是延迟消息的用法. 延迟消息含义不解释了,就是字面意思. 用法一共两种方式,死信队列和延迟插件,两种各有利弊,我会一一陈述并给出最佳用法. 死信队列方式 死信队列不要理解成很玄乎的东西,它就是普通队列绑…
这个消息比较实用也很关键,它代表非显示区域命中测试.这个消息优先于所有其他的显示区域和非显示区域鼠标消息.其中lParam参数含有鼠标位置的x和y屏幕坐标,wParam 这里没有用. Windows应用程序通常把这个消息传送给DefWindowProc,然后Windows用WM_NCHITTEST消息产生与鼠标位置相关的所有其他鼠标消息.通俗的讲从消息产生消息. case WM_NCHITTEST: return (LRESULT)HTNOWHERE; 以上代码能禁用窗口的所有显示区域和非显示区…
Real Time Messaging Protocol(实时消息传输协议) 应用层协议 RTMP协议中, 基本数据单元称为消息(Message).当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk) 1 消息 不同种类的消息包含不同的Message Type ID,代表不同的功能.RTMP协议中一共规定了十多种消息类型.例如,1-7的消息用于协议控制,这些消息一般是RTMP协议自身管理要使用的消息,用户一般情况下无需操作其中的数据. 8,9的消息分别用于传…
消息 在Windows中,消自由MSG结构体表示 typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; }MSG; HWND hwnd 消息所属的窗体句柄 message 指定了消息的标识符.在Windows应用程序中,消息是由一个数值来表示 的.一般为WM_XXX宏(WM是WindowsMessage的缩写) wParam和lParam 指定消息附…
RabbitMQ是什么 ? RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. 1:安装RabbitMQ需要先安装Erlang语言开发包.下载地址 http://www.erlang.org/download.html 在win7下安装Erlang最好默认安装. 配置环境变量 ERLANG_HOME C:\Program Files (x86)\erl5.9 添加到PATH  %ERLANG_HOME%\bin; 2:…
一个有趣的网络解释: 信号量就是中央政府发给官人做一方大员的官印,有很多种官印但是不能一印多发,得到官印者才能掌权鱼肉一方百姓(任务得到信号量才能运行),否则你就只要等官跑官.(当然官印也可随时被政府收回(因腐败违反纪律等问题被剥夺优先权而分给其他人,当然以后表现好还可复出),或者嫌累或工资低自己封印辞官)    邮箱,就好给比当差的下达的抄家.拆房.收监等红头文件,拿到啥样的文件就干啥.   消息队列,就是给任务发了一连串的邮件,官员(任务)拿到这一大摞文件,可以从底部或者顶部(LIFO or…
之前写了一个软件用于实验室的打卡提醒,其中一个重要的功能是在关机之前提醒当天晚上是否已经打卡.之前我是在WM_ENDSESSION中弹出一个模态对话框来提醒,在XP中基本工作正常,在Win7中大多数时候工作正常,但是有时候会出现不提醒现象.我想这中间是不是有什么玄机,Windows的关机方案从XP到Win7到底发生了什么变化,如何进行有效的截获Windows关机消息.对此,我搜寻了MSDN和网上论坛结合自己的测评给出一个完善的描述和解决方案,如果你有类似的需求,可以参考这篇文章. 在MSDN中对…
使用delphi的消息机制可以方便操作后台,其中重要的就是sendmessage()函数.下面讲解一下这个函数 function SendMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; 其中四个参数的含义和说明如下:1.hWnd:对象的句柄.希望将消息传送给哪个对象,就把该对象的句柄作为实参传送,在 VB 中可以简单地用“对象.hWnd”获得某个对象的句柄,如 Text1.hWnd…
MessageBox函数 int WINAPI MessageBoxW( HWND hWnd,//窗口句柄 LPCWSTR lpText,//消息框主体显示的字符串 LPCWSTR lpCaption,//消息框标题上的字符串 UINT uType//样式 ); 样式有 #define MB_OK 0x00000000L #define MB_OKCANCEL 0x00000001L #define MB_ABORTRETRYIGNORE 0x00000002L #define MB_YESNO…
例如对windows发消息让文本选中.     SendMessage(Text1.hwnd,EM_GETSEL,0,-1 ); EC_LEFTMARGIN(&H1) EC_USEFONTINF //设置左边距时使用 EC_RIGHTMARGIN EC_USEFONTINF //设置右边距时使用 EC_USEFONTINF,O//边距 设置编辑控件的左.右边距,当wParam含EC_LEFTMARGIN时在lParam的低16位指定左边距点数,当wParam含EC_RIGHTMARGIN时在lP…
1)Add the window to the clipboard viewer chain. 通过SetClipboardViewer()传入窗口句柄,所有监视剪贴板的窗口句柄会组成一个链表(后来者靠前).这样当剪贴板内容发生变化时,Windows系统给这些窗口发生消息.剪贴板是系统的一个功能.每个系统功能都有一个消息链.用户程序想要使用某个系统功能,首先是把自己的程序窗口注册到指定功能的消息链上.如果把一个系统功能理解一个设备,就象Windows对文件或者设备都用处理函数.系统中的每个设备都…
1.SendMessage:发送消息给指定的窗口过程:直到窗口过程处理了消息才返回. 2.PostMessage:将消息放入消息队列(与指定窗口创建的线程相关)中:无需等待消息处理,立即返回.   不能发送WM_QUIT消息,此消息只能由PostQuitMessage函数发送. 3.PostThreadMessage:发送消息给指定线程的消息队列:无需等待线程处理消息,立即返回.   此函数发送的消息和窗口是无关的.我们只需指定线程ID就OK了,但要保证线程已创建,否则会失败. 4.GetMes…
简单介绍: Windows phone平台支持三种形式的推送通知: 1.Tile——也就是在Start屏幕程序平铺图标 2.Toast——创建一个显示在当前屏幕中的Toast弹出窗口 3.Raw——有应用程序自己来处理的通知:对于用户是透明的. 这三种推送的过程是相同的,都涉及到三方:Windows phone应用程序.基于云的通知服务(Notification Service,由微软提供).通知源. 推送通知的过程如下图所示: 顺序如下:1.具有消息推送功能的应用发出消息推送 2.向微软推送通…
一个topic有多个队列,分散在不同的broker.producer在发送消息的时候,需要选择一个队列 producer发送消息全局时序图: 队列选择与容错策略结论: 在不开启容错的情况下,轮询队列进行发送,如果失败了,重试的时候过滤失败的Broker 如果开启了容错策略,会通过RocketMQ的预测机制来预测一个Broker是否可用 如果上次失败的Broker可用那么还是会选择该Broker的队列 如果上述情况失败,则随机选择一个进行发送 在发送消息的时候会记录一下调用的时间与是否报错,根据该…
题目:key及ftok函数的作用. 解答: key是用来创建消息队列的一个参数,当两个key相同时,创建消息队列会引起“误会”(除非有意为之).所以我们可以通过ftok函数来获得一个“不易重复”的key. key对于进程间通信也有帮助,当一进程知晓另一进程创建消息队列所用的key后,便可以使用该key访问该消息队列. 题目:编写一个可以向消息队列发送消息和接收消息的程序. 实现代码: #include <stdio.h> #include <sys/types.h> #includ…
之前写了一个软件用于实验室的打卡提醒,其中一个重要的功能是在关机之前提醒当天晚上是否已经打卡.之前我是在WM_ENDSESSION中弹出一个模态对话框来提醒,在XP中基本工作正常,在Win7中大多数时候工作正常,但是有时候会出现不提醒现象.我想这中间是不是有什么玄机,Windows的关机方案从XP到Win7到底发生了什么变化,如何进行有效的截获Windows关机消息.对此,我搜寻了MSDN和网上论坛结合自己的测评给出一个完善的描述和解决方案,如果你有类似的需求,可以参考这篇文章. 在MSDN中对…