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