windows消息汇总.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本文主要包括以下内容: ??????????????????????????? 1、简单理解Windows的消息 2、一段简单的Win32消息循环程序???????????????????? 3、进一步深入理解Windows消息 4、队列消息和非队列消息 5、WM_COMMAND和WM_NOTIFY ? 1、简单理解Windows的消息 消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。 举个例子来说,鼠标单击某应用程序的一个按钮。这时,Windows(操作系统)给应用程序发送这个消息,通知应用程序该按钮被点击,应用程序将进行相应反应。 消息一般用一个32位的数来标识,这个数唯一地标识这个消息。这些消息的标识符一般在头文件winuser.h 中定义,如: #define WM_PAINT 0×000F #define WM_QUIT 0×0012 其实消息本身是一个MSG结构。MSG结构定义如下: typedef struct tagMSG { HWND hwnd; //接受消息的窗口句柄 UINT message; //消息标识符 WPARAM wParam; //32位附加信息 LPARAM lParam; //32位附加信息 DWORD time; //消息创建的时间 POINT pt; //消息创建时鼠标在屏幕坐标系中的位置 } MSG; 也就是说,对于任何一个消息,都有一个MSG变量与之对应,该变量包含了消息的相关信息。而我们在一般情况下,只使用消息的消息标识符,该标识符也唯一地代表了这个消息。 举个例子来说,当我们收到一个字符消息的时候,message成员变量的值就是WM_CHAR,但用户到底输入的是什么字符,那么就由wParam和lParam来说明。wParam、lParam表示的信息随消息的不同而不同。 Windows操作系统已经给我们定义了大量的消息,这些消息我们称为系统消息。除了系统消息,我们还可以自己定义消息,即自定义消息。 值小于0×0400的消息都是系统消息,自定义消息一般都大于0×0400。 0×0400 WM_USER 0×0400——0×7FFF 自定义消息 在WINUSER.H中,我们有定义: #define WM_USER 0×0400 对于自定义消息,我们一般采用WM_USER 加一个整数值的方法定义自定义消息,如: #define WM_RECVDATA WM_USER + 1 对于WPARAM和LPARAM附带的信息看下表: Use of the wParam and lParam parameters are summarized here. Message Source wParam (high word) wParam (low word) lParam Menu 0 Menu identifier (IDM_*) 0 Accelerator 1 Accelerator identifier (IDM_*) 0 Control Control-defined notification code Control identifier Handle to the control window ? 2、通过一段简单的Win32消息循环程序理解Windows消息 ShowWindow(hwnd,iCmdShow);//显示窗口 UpdateWindow(hwnd);//立即显示窗口 //消息循环 MSG msg; while(GetMessage(msg,NULL,0,0))//从消息队列中取消息 { TranslateMessage (msg); //转换消息 DispatchMessage (msg); //派发消息 } return msg.wParam; //消息处理程序 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); if(!wmEvent) //菜单消息 { switch (wmId) { case IDM_ABOUT: DialogBox

文档评论(0)

yuguanyin2015 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档