为以下三个主要类别编写处理程序的消息类型:
Windows 消息
这主要包括以 WM_ 前缀开头的消息,WM_COMMAND除外。 Windows 消息由窗口和视图处理。 这些消息通常具有用于确定如何处理消息的参数。
控制通知
这包括从控件和其他子窗口到其父窗口的通知消息WM_COMMAND。 例如,编辑控件在用户执行了可能更改编辑控件中的文本的作时,向其发送一条包含EN_CHANGE控件通知代码的WM_COMMAND消息。 消息的窗口处理程序以某种适当的方式响应通知消息,例如检索控件中的文本。
框架将控制通知消息路由为其他 WM_ 消息。 但是,一个例外是当用户单击按钮时由按钮发送的BN_CLICKED控制通知消息。 此消息特别被视为命令消息,并像其他命令一样路由。
命令消息
这包括来自用户界面对象的WM_COMMAND通知消息:菜单、工具栏按钮和快捷键。 如 命令目标中所述,框架处理命令的方式与其他消息不同,并且可以由更多类型的对象处理。
Windows 消息和 Control-Notification 消息
类别 1 和 2 中的消息(Windows 消息和控制通知)由窗口处理:派生自类的类 CWnd
的对象。 这包括 CFrameWnd
、 CMDIFrameWnd
、 CMDIChildWnd
、 CView
和 CDialog
你自己的派生自这些基类的类。 此类对象封装 Windows 窗口的句 HWND
柄。
命令消息
类别 3 中的消息(命令)可以由更广泛的对象处理:文档、文档模板和应用程序对象本身,以及窗口和视图。 当命令直接影响某些特定对象时,让该对象处理该命令是有意义的。 例如,“文件”菜单上的“打开”命令在逻辑上与应用程序关联:应用程序在收到命令时打开指定的文档。 因此,Open 命令的处理程序是应用程序类的成员函数。 有关命令以及如何将命令路由到对象的详细信息,请参阅 框架如何调用处理程序。