菜单

                                                        菜单

   菜单为用户和Windows应用程序之间的交互提供了主要方法,将应用程序的功能有效地的组织分类,便于用户快速访问。


一、菜单的5个部分组成

菜单栏、菜单(就是单击菜单栏上菜单标题时出现的命令列表)、

菜单项(包括 命令、分隔条和子菜单标题)、子菜单、分隔条


菜单就是一和资源 。

二、菜单消息

WM_COMMAND  和 UPDATE_COMMAND_UI


i::::消息的分类 :

1)标准消息

除WM_COMMAND之外,所有以WM_开头的消息都是,

从CWnd派生的类,都可以接收到这类消息。

2)命令消息 

来自菜单、加速键或工具栏按钮的消息。以WM_COMMAND形式呈现,

它有标识(ID)来区分,在SDK中,通过参数wParam参数来识别。

3)通告消息

由控件产生的消息,以WM_COMMAND呈现

从CCmdTarget派生的类,都 可以接收到这类消息。

注:CWnd是CCmdTarget 的派生类

从上可看出WM_COMMAND为菜单命令消息,需要注意的是:

我们可以新建一个单文档类型 的工程,菜单类的命令响应可以在

CMainFrame,CMenuApp,CMenuDoc,CMenuView 都 可以添加

但是响应顺序不同:View ->Doc ->Frame->App

其中App和Doc它们可以接收命令消息 ,但不可以接收标准消息。

II:::::命令更新机制

菜单项状态的维护是依赖于CN_UPDATE_COMMAND_UI消息,谁捕获

CN_UPDATE_COMMAND_UI消息,MFC就在其中创建一个CCmdUI对象。

我们可以通过手工或利用ClassWizard在消息映射中添加ON_UPDATE_COMMAND_UI

这个宏来捕获 CN_UPDATE_COMMAND_UI消息 。

而在后台所做的工作是,当要显示菜单时,操作系统发出WM_INITMENU_UPOPUP消息,然后由MFC

的基类发CFrameWnd接管。它创建一个CCmdUI对象,并与第一个菜单项相关联,调用对象的一个

成员函数DoUpdate()。这个函数发出CN_UPDATE_COMMAND_UI消息,这休消息带有指向CCmdUI对象

的指针。同不念旧恶CCmdUI对象就设置为第二个菜单项相关联。这样顺序进行,直到完成所有菜单项。(菜单项的更新为依次更新)


更新命令UI程序仅应用于弹出式菜单项上,不能应用于永久显示的顶级菜单项目上。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值