⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled-23.txt

📁 mfc 教程
💻 TXT
字号:
只要这个基础结构的位置合适,框架就可以调用GetMessageMap来获取一个指向CMainwin-
dow的messageMap结构的指针。然后它可以搜索.messageEntries数组来查看CMainwindow
是否具有此消息的处理程序。此外,如果需要,它还能够维持一个指向CFramewnd的mes-
sag6Map结构的指针并搜索基类的消息映射。
    下面就是对当一个CMainwindow的消息抵达时所发生事件的相当详细的描述。要分派
此消息,框架调用了CMainwindow从CWnd继承下来的虚拟WindowProc函数。WindowProc
调用 OnwndMsg,而  OnwndMsg又调用  GetMessapeMap来获取一个指向  CMainwindow:: mes-
sageMap的指针,并搜索  CMainwindow::一messageEntries来获取一个其消息   ID与当前正等待
处理的消息的ID相匹配的条目。如果找到了该条目,对应的CMainwindow函数(其地址与
该消息ID一同存储在messageEntries数组中)就被调用。否则,onwndMsg参考CMainwin-
dow:: messageMap获得一个指向 CFramewnd:: messageMap的指针并为基类重复该过程。如果
基类没有该消息的处理程序,则框架将上升一个级别,参考基类的基类,相当系统地沿着继
承链向上走,直到它找到一个消息处理程序或者将该消息传递给Windows进行默认处理为
止。图回一5从CMainwindow的消息映射条目开始,用示意图阐明了CMainwindow的消息映
射,并表明了框架在搜索一个匹配特定消息ID的处理程序时所经过的路径。
    MFC的消息映射机制的作用相当于,它是将消息连接到消息处理程序而不使用虚拟函
数的一种非常有效的方式。虚拟函数在空间上并不有效,因为它们需要虚表,而且即使虚表
中的函数没有被覆盖,虚表也会消耗内存。相反,消息映射所使用的内存的数量与它所包含
的条目的个数成比例。由于程序员要执行一个包含所有不同消息类型的处理程序的窗口类

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -