• 菜单及CMenu类的使用


    CMenu类的主要成员函数

    BOOL LoadMenu(UINT nIDResource);

    加载菜单资源,并将其附加到CMenu对象上。参数nIDResource指定了要加载的菜单资源的ID。如果菜单加载成功则返回TRUE,否则返回FALSE。

    BOOL DeleteMenu(UINT nPosition,UINT nFlags);

    在菜单中删除一个菜单项。参数nPosition指定要删除的菜单项。参数nFlags就用来解释nPosition的意义,

    为MF_BYCOMMAND时说明nPosition表示菜单项的ID,

    为MF_BYPOSITION时说明nPosition表示菜单项的位置,

    第一个菜单项的位置为0。如果删除菜单项成功则返回TRUE,否则返回FALSE。

    BOOL TrackPopupMenu(UINT nFlags,int x,int y,CWnd* pWnd,LPCRECT lpRect = 0);

    用来在指定位置显示一个浮动的弹出式菜单。参数nFlags指定屏幕坐标和鼠标位置的标志,可以是以下取值:

    TPM_CENTERALIGN:菜单在水平方向上相对于参数x指定的坐标值居中显示
    TPM_LEFTALIGN:菜单的左侧与参数x指定的坐标值对齐
    TPM_RIGHTALIGN:菜单的右侧与参数x指定的坐标值对齐
    TPM_BOTTOMALIGN:菜单的底部与参数y指定的坐标值对齐
    TPM_TOPALIGN:菜单项的顶部与参数y指定的坐标值对齐
    TPM_VCENTERALIGN:菜单在垂直方向上相对于参数y指定的坐标值居中显示

    参数x指定弹出式菜单的水平方向的屏幕坐标,参数y指定菜单顶部垂直方向上的屏幕坐标,参数pWnd指明哪个窗口拥有此弹出式菜单,不能为NULL,参数lpRect忽略。

    UINT CheckMenuItem(UINT nIDCheckItem,UINT nCheck);

    在弹出菜单中为菜单项增加选中标记或移除选中标记。参数nIDCheckItem指定要选中或取消选中的菜单项。参数nCheck指定菜单项的选中状态和如何根据nIDCheckItem确定菜单项的位置,可以是MF_CHECKED或MF_UNCHECKED与MF_BYPOSITION或MF_BYCOMMAND的组合,这几个标志的含义如下:

    MF_BYCOMMAND:为默认值。说明参数nIDCheckItem表示菜单项的ID
    MF_BYPOSITION:说明参数nIDCheckItem表示菜单项的位置,第一个菜单项的位置是0
    MF_CHECKED:为菜单项添加选中标记
    MF_UNCHECKED:为菜单项移除选中标记

     该函数返回菜单项之前的状态:MF_CHECKED或MF_UNCHECKED, 如果菜单项不存在则返回0xFFFFFFFF。

     UINT EnableMenuItem(UINT nIDEnableItem,UINT nEnable);

           激活、禁用菜单项或使其变灰。参数nIDEnableItem指定要激活、禁用或变灰的菜单项。参数nEnable指定操作的类型,可以是MF_DISABLED、MF_ENABLED或MF_GRAYED与MF_BYCOMMAND或MF_BYPOSITION的组合,这些值的含义如下:

           MF_BYCOMMAND:同CheckMenuItem
           MF_BYPOSITION:同CheckMenuItem
           MF_DISABLED:禁用菜单项,使其不能被选择但不变灰
           MF_ENABLED:激活菜单项,使其能够被选择并由变灰状态恢复
           MF_GRAYED:禁用菜单项,使其不能被选择并变灰

           该函数返回菜单项之前的状态:MF_DISABLED、MF_ENABLED或MF_GRAYED

    CMenu* GetSubMenu(int nPos) const;

           获取弹出菜单的CMenu对象。参数nPos指定弹出菜单在菜单中的位置,不能使用ID。返回值是CMenu对象的指针,该CMenu对象的m_hMenu成员为由nPos指定的弹出菜单的句柄,如果不存在这样的CMenu对象则返回NULL,然后创建一个临时弹出菜单。

           CMenu类的成员函数先讲这些,如果大家需要用其他的函数可以到MSDN中查看,解释的很清楚。

    菜单消息

           菜单主要能发送两种消息:COMMAND消息和UPDATE_COMMAND_UI消息。下面分别讲解:

           COMMAND消息:在菜单项被点击时发送该消息。

           UPDATE_COMMAND_UI消息:用来维护菜单项的各项状态,包括激活、禁用、变灰、选中、未选中等。在下拉菜单每次打开的时候,所有菜单项的此消息都会被发送出去。如果所属类中为菜单项的该消息添加了处理函数,则执行相应函数更新菜单状态,如果菜单项没有此消息处理函数,也没有COMMAND消息的处理函数,那么它就会变灰。

  • 相关阅读:
    学习进度表
    mysql实现跨库查询
    jmeter分布式(1台Windows,一台Mac,亲测可用互相使用)
    解决appium 连接真机Android 9启动报错.....shell "ps 'uiautomator'
    使用fiddler抓包修改请求/返回的数据
    adb 获取当前界面activity
    使用adb 命令获取APP包名
    jmeter实现登录并设置token为全局变量
    python3 SystemError: Parent module '' not loaded, cannot perform relative import
    adb 运行提示error: cannot connect to daemon
  • 原文地址:https://www.cnblogs.com/wangfx91/p/4849189.html
Copyright © 2020-2023  润新知