请考虑进程的发送部分以及框架的响应方式。
大多数消息都来自用户与程序交互的结果。 命令由菜单项或工具栏按钮中的鼠标单击或快捷键击生成。 用户还会通过移动或调整窗口大小来生成 Windows 消息。 当发生程序启动或终止等事件时,会发送其他 Windows 消息,因为 Windows 会获取或失去焦点,等等。 控件通知消息由鼠标单击或其他用户与控件交互(例如对话框中的按钮或列表框控件)生成。
Run
类CWinApp
的成员函数检索消息并将其调度到相应的窗口。 大多数命令消息都发送到应用程序的主框架窗口。
WindowProc
类库预定义的消息获取消息,并根据收到的消息类别以不同的方式路由消息。
现在,请考虑该过程的接收部分。
消息的初始接收方必须是窗口对象。 Windows 消息通常由该窗口对象直接处理。 命令消息(通常源自应用程序的主框架窗口)将路由到 命令路由中所述的命令目标链。
能够接收消息或命令的每个对象都有自己的消息映射,该映射将消息或命令与其处理程序的名称配对。
当命令目标对象收到消息或命令时,它会在其消息映射中搜索匹配项。 如果它找到消息的处理程序,则调用处理程序。 有关如何搜索消息映射的详细信息,请参阅 框架如何搜索消息映射。 请再次参阅 框架中的命令。