vc 菜单

    技术2022-06-23  38

    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 派生的类,都可以接收到 [ 命令消息 ] [ 通告消息 ]

    %

    最新回复(0)