mfc如何屏蔽掉菜单中的一些选项

首页 > 实用技巧 > 作者:YD1662023-05-07 11:46:09

Windows窗口大多有菜单,而菜单的作用在程序运行中有着至关重要的作用。

前面学习了绘图和键盘鼠标事件。今天就学习菜单。

菜单在MFC中是CMenu类。

在Windows中,HMENU表示菜单的句柄,CMenu类封装的便是HMENU。

构造方法:CMenu::CMenu ,构造 CMenu 对象。

CMenu有一个公共的对象(对外公开)

CMenu::m_hMenu,指定的句柄附加到的 Windows 菜单CMenu对象。

CMenu也有以下函数:

(1)CMenu::AppendMenu 将新项追加到此菜单的末尾。

(2)CMenu::Attach 将附加的 Windows 菜单句柄CMenu对象。

(3)CMenu::CheckMenuItem 旁边放置一个复选标记,或者从弹出菜单中的菜单项移除复选标记。

(4)CMenu::CheckMenuRadioItem 将菜单项旁边的单选按钮,并从所有组中的其他菜单项中移除的单选按钮。

(5)CMenu::CreateMenu 创建空菜单,并将其附加到CMenu对象。

(6)CMenu::CreatePopupMenu 创建空的弹出菜单,并将其附加到CMenu对象。

(7)CMenu::DeleteMenu 从菜单中删除指定的项。 如果菜单项具有相关联的弹出菜单,销毁弹出菜单的句柄并释放其占用的内存。

(8)CMenu::DeleteTempMap 删除任何临时CMenu创建的对象FromHandle成员函数。

(9)CMenu::DestroyMenu 销毁附加到的菜单CMenu对象并释放任何菜单所占用的内存。

(10)CMenu::Detach 从 Windows 菜单句柄中分离CMenu对象并返回句柄。

(11)CMenu::DrawItem 由框架在所有者描述菜单更改的可视方面时调用。

(12)CMenu::EnableMenuItem 启用、 禁用,或变暗 (灰色) 菜单项。

(13)CMenu::FromHandle 返回一个指向CMenu给定 Windows 菜单句柄的对象。

(14)CMenu::GetDefaultItem 确定指定的菜单上的默认菜单项。

(15)CMenu::GetMenuContextHelpId 检索与菜单关联的帮助上下文 ID。

(16)CMenu::GetMenuInfo 检索特定菜单上的信息。

(17)CMenu::GetMenuItemCount 确定弹出窗口或顶级菜单中项的数量。

(18)CMenu::GetMenuItemID 获取位于指定位置的菜单项的菜单项标识符。

(19)CMenu::GetMenuItemInfo 检索菜单项有关的信息。

(20)CMenu::GetMenuState 在弹出菜单中返回指定的菜单项或项的数目的状态。

(21)CMenu::GetMenuString 检索指定的菜单项的标签。

(22)CMenu::GetSafeHmenu 返回m_hMenu包装此CMenu对象。

(23)CMenu::GetSubMenu 检索指向一个弹出菜单。

(24)CMenu::InsertMenu 向菜单下移动其他项中指定位置处插入新菜单项。

(25)CMenu::InsertMenuItem 在菜单中的指定位置处插入新菜单项。

(26)CMenu::LoadMenu 从可执行文件加载菜单资源,并将其附加到CMenu对象。

(27)CMenu::LoadMenuIndirect 从内存中的菜单模板加载一个菜单,并将其附加到CMenu对象。

(28)CMenu::MeasureItem 由框架调用以创建一个所有者描述菜单时确定菜单维度。

(29)CMenu::ModifyMenu 更改现有菜单项中指定的位置。

(30)CMenu::RemoveMenu 从指定的菜单中删除具有相关联的弹出菜单的菜单项。

(31)CMenu::SetDefaultItem 设置指定的菜单的默认菜单项。

(32)CMenu::SetMenuContextHelpId 设置要与菜单相关联的帮助上下文 ID。

(33)CMenu::SetMenuInfo 设置特定菜单上的信息。

(34)CMenu::SetMenuItemBitmaps 将指定的选中标记位图的菜单项与相关联。

(35)CMenu::SetMenuItemInfo 更改菜单项有关的信息。

(36)CMenu::TrackPopupMenu 在指定位置显示一个浮动的弹出菜单,并在弹出菜单上跟踪选定的项。

(37)CMenu::TrackPopupMenuEx 在指定位置显示一个浮动的弹出菜单,并在弹出菜单上跟踪选定的项。

菜单包含了一般的菜单(特别代指通常标题栏下的菜单)和弹出菜单(指右键弹出的菜单)。

两种菜单一样。

而且菜单具有一定的标识,用于菜单被点击后运行过程的识别绑定。

在开发时,菜单属于一种资源。

我们用以下方法实现菜单。

我们在项目中选择添加资源:

mfc如何屏蔽掉菜单中的一些选项,(1)

添加资源的窗口

mfc如何屏蔽掉菜单中的一些选项,(2)

菜单的编辑窗口

编辑菜单过程中,要为每个菜单项分配ID。这个ID就是菜单操作的识别号,要根据这个ID来绑定菜单操作的方法或者函数。

使用ON_COMMAND宏来绑定

绑定的方法是ON_COMMAND(ID号,函数)

绑定使用的位置是MESSAGE_MAP()

同样的,右键菜单和一般的菜单栏菜单是一样的,唯一的区别便是,右键菜单(又称快捷菜单)只有在右键点击时弹出。所以我们一般会为右键添加如下的代码:

void MyWnd::OnRButtonDown(UINT nFlags, Cpoint point) {

CMenu cm1;

cm1.LoadMenuA(IDR_MENU2);//IDR_MENU2是菜单的ID号

CMenu* cm2 = cm1.GetSubMenu(0);

cm2->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, point.x, point.y, AfxGetMainWnd());

}

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.