[parttwo2.pptVIP

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[parttwo2

Part Ⅱ_2 2.1 Windows SDK编程 2.2 Windows应用程序的运行机制 2.3 编写第一个WINDOWS程序 2.4 Windows数据类型 2.5 代码分析 2.6 图形设备接口 2.1 Windows SDK编程 2.2 Windows应用程序的运行机制 2.3编写第一个WINDOWS程序 2.4 Windows数据类型 2.5 代码分析 Windows 程序设计的难点 面对上千个API函数 与C/C++不同的数据类型 When/where发生了what事件,发送了what消息 Windows消息 2.6 图形设备接口 2.6.1 GDI 的结构 2.6.2 GDI函数 系统消息和应用程序消息 从消息的来源来看,可以分为:系统定义的消息和应用程序定义的消息。 系统消息ID的范围是从0到WM_USER-1,或0X80000到0XBFFFF;应用程序消息从WM_USER(0X0400)到0X7FFF,或0XC000到0XFFFF;WM_USER到0X7FFF范围的消息由应用程序自己使用;0XC000到0XFFFF范围的消息用来和其他应用程序通信,为了ID的唯一性,使用::RegisterWindowMessage来得到该范围的消息ID。 ?消息结构和消息处理 消息的结构 为了从消息队列获取消息信息,需要使用MSG结构。例如,::GetMessage函数(从消息队列得 到消息并从队列中移走)和 ::PeekMessage函数(从消息队列得到消息但是可以不移走)都使用了 该结构来保存获得的消息信息。MSG 结构的定义如下: typedef struct tagMSG { // msg HWND hwnd; //接收消息的窗口句柄 UINT message; //消息标识( ID) WPARAM wParam; //第一个消息参数 LPARAM lParam; //第二个消息参数 DWORD time; //消息产生的时间 POINT pt; //消息产生时鼠标的位置 } MSG; 该结构包括了六个成员,用来描述消息的有关属性: Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 2.应用程序通过窗口过程来处理消息 如前所述,每个“窗口类”都要登记一个如下形式的窗口过程: LRESULT CALLBACK MainWndProc (HWND hwnd,// 窗口句柄 ,UINT msg,// 消息标识 ,WPARAM wParam,// 消息参数1 LPARAM lParam// 消息参数2 ) 应用程序通过窗口过程来处理消息:非队列消息由 Windows直接送给目的窗口的窗口过程, 队列消息由::DispatchMessage等派发给目的窗口的窗口过程。需要的话,窗口过程用 ::GetMessageTime获取消息产生的时间,用::GetMessagePos获取消息产生时鼠标光标所在的位置 。 在窗口过程里,用 switch/case分支处理语句来识别和处理消息。 3.应用程序通过消息循环来获得对消息的处理 每个GDI应用程序在主窗口创建之后,都会进入消息循环,接受用户输入、解释和处理消息。 消息循环的结构如下: while (GetMessage(msg, (HWND) NULL, 0, 0)) {// 从消息队列得到消息 if (hwndDlgModeless == (HWND) NULL || !IsDialogMessage(hwndDlgModeless, msg) !TranslateAccelerator(hwndMain, haccel, msg)) { TranslateMessage(msg); DispatchMessage(msg); // 发送消息 } } Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for

文档评论(0)

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

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

1亿VIP精品文档

相关文档