- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
附录B 消息分流器、子控件宏和API宏.PDF
下载
附录B 消息分流器、子控件宏和A P I宏
每当我参加一些会议时,常问一些人是不是使用消息分流器,而回答通常是“ N o ”。我再
进一步深究这件事,发现很多人不知道消息分流器是干什么用的,甚至没有听说过它。在本书
中,通过使用带有消息分流器的C / C + +编写示例代码,我想向大家介绍这种不大为人所知但很
有用的宏。
消息分流器定义在Microsoft Visual C++ 中提供的Wi n d o w s X . h文件里。通常在Wi n d o w s . h文
件之后紧接着包含这个文件。 Wi n d o w s X . . h文件就是一组# d e f i n e指令,建立了一组供我们使用
的宏。Wi n d o w s X . h 的宏实际上分为三组:消息分流器、子控件宏和A P I宏。这些宏以下述的方
式为我们提供帮助:
• 利用这些宏可以减少程序中要做的转换( c a s t i n g )的数量,并可使所要求的转换是无错
误的。使用C / C + + 的Wi n d o w s编程中一个大的问题是所要求的转换数量。你很难看到一
个不要求某种转换的 Wi n d o w s 函数调用。但应该尽量避免使用转换,因为转换阻碍编译
器发现代码中的潜在错误。一个转换是在告诉编译程序:“我知道我在这里传递了错误的
转换,但就要这样做。我知道我在干什么。”当你做了许多转换时,就很容易出错。编译
程序应该尽可能对此提供帮助。
• 使代码的可读性更好。
• 可简化1 6位Wi n d o w s、3 2位Wi n d o w s和6 4位Wi n d o w s之间的代码移植工作。
• 易于理解(只是一些宏)
• 这些宏容易结合到已有的代码中。可以不管老的代码而立即在新的代码中使用这些宏。
不必修改整个程序。
• 在C和C + +代码中都可以使用这些宏,尽管当使用C + +类时它们不是必需的。
• 如果需要某一个特性,而这些宏不直接支持这个特性,可以根据这个头文件中的宏,很
容易地编写自己的宏。
• 不需要参照或记住费解的Wi n d o w s构造。例如,许多Wi n d o w s 中的函数,要求一个l o n g型
参数,其中这个长参数的高字( h i g h - w o r d )的值代表一个东西,而其低字( l o w - w o r d )
又代表另一个东西。在调用这个函数之前,你必须用两个单独的值构造一个 l o n g 型值。
通常利用Wi n D e f . h 中的M A K E L O N G宏来做这种事。我简直记不清有多少次把两个值的次
序给弄反了,造成对函数传递了一个错误的值。而Wi n d o w s X . h 中的宏可以帮我们的忙。
B.1 消息分流器
消息分流器(message cracker )使窗口过程的编写更加容易。通常,窗口过程是用一个大
的s w i t c h语句实现的。在我的经验中,我见过有的窗口过程的 s w i t c h语句包含5百多行代码。我
们都知道按这种方式实现窗口过程是一种坏的习惯,但我们都这么做过。而利用消息分流器可
将s w i t c h语句分成小的函数,每个窗口消息对应一个函数。这样使代码更容易管理。
有关窗口过程的另一个问题是每个消息都有 w P a r a m和l P a r a m参数,并且根据消息的不同,
这些参数的意思也不同。在某些情况下,如对 W M _ C O M M A N D消息,w P a r a m包含两个不同的
值。w P a r a m参数的高字是通知码,而低字是控件的 I D 。或者是反过来?我总是忘了次序。如
附录 B 消息分流器、子控件宏和API宏计计 687
下载
果使用消息分流器,就不用记住或查阅这些内容。消息分流器之所以这样命名,是因为它们对
任何给定的消息进行分流。为了处理W M _ C O M M A N D消息,你只需编写这样一个函数:
这是多么容易!分流器查看消息的w P a r a m和l P a r a m参数,将参数分开,并调用你的函数。
为
您可能关注的文档
最近下载
- 2024年城市管理网格员四级-中级理论知识试题及答案.docx VIP
- 2024年城市管理网格员三级(高级)理论知识考试试题及答案.docx VIP
- 2020-2021学年北京师大二附中实验学校九年级上学期期中数学试卷(含解析).pdf VIP
- 2025年城市管理网格员三级(高级)理论知识考试试题及答案.docx VIP
- 压力性尿失禁的护理查房PPT课件.pptx VIP
- 2024-2025学年辽宁铁道职业技术学院单招《英语》试卷及答案详解【典优】.docx VIP
- 辽宁铁道职业技术学院单招考试文化素质数学通关考试题库(完整版)附答案详解.docx VIP
- 学年西城区四中初三上学期期中数学试卷.pdf VIP
- 2019-2020学年北京四中九年级(上)期中数学试卷--含详细解析.docx VIP
- 中国餐饮企业发展报告.pptx VIP
文档评论(0)