1 .弹出菜单( Pop-up) 是不能用来作命令响应的。
2 . MFC 中菜单项消息如果利用 ClassWizard 来对菜单项消息分别在上述四个类中进行响应,则菜单消息传递顺序: View 类 --Doc 类 --CMainFrame 类 --App 类。菜单消息一旦在其中一个类中响应则不再在其它类中查找响应函数。
具体:
当点击一个菜单项的时候,最先接受到菜单项消息的是 CMainFrame 框架类, CMainFrame 框架类将会把菜单项消息交给它的子窗口 View 类,由 View 类首先进行处理;如果 View 类检测到没对该菜单项消息做响应,则 View 类把菜单项消息交由文档类 Doc 类进行处理;如果 Doc 类检测到 Doc 类中也没对该菜单项消息做响应,则 Doc 类又把该菜单项消息交还给 View 类,由 View 类再交还给 CMainFrame 类处理。如果 CMainFrame 类查看到 CMainFrame 类中也没对该消息做响应,则最终交给 App 类进行处理。
3 .消息的分类:标准消息,命令消息,通告消息。
[ 标准消息 ] :除 WM_COMMAND 之外,所有以 WM_ 开头的消息。
[ 命令消息 ] :来自菜单、加速键或工具栏按钮的消息。这类消息都以 WM_COMMAND 呈现。
在 MFC 中,通过菜单项的标识( ID )来区分不同的命令消息;在 SDK 中,通过消息的 wParam 参数识别。
[ 通告消息 ] :由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口(通常是对话框)通知事件的发生。这类消息也是以 WM_COMMAND 形式呈现。
说明:
1 )从 CWnd 派生的类,都可以接收到 [ 标准消息 ] 。
2 )从 CCmdTarget 派生的类,都可以接收到 [ 命令消息 ] 和 [ 通告消息 ] 。
%