MFC CMenu 类 公共方法:CMenu::SetMenuContextHelpId
在 MFC(Microsoft Foundation Classes)中,CMenu::SetMenuContextHelpId 是 CMenu 类的一个公共方法,用于为菜单设置上下文帮助标识符(context help ID)。以下是该方法的一般语法:BOOL SetMenuContextHelpId(DWORD dwContextHelpId);参数说明: dwContextHelpId:上下文帮助标识符,一个 DWORD 类型的值。返回值: 如果成功设置上下文帮助标识符,则返回 TRUE;否则,返回 FALSE。使用示例:CMenu myMenu;myMenu.LoadMenu(IDR_MYMENU);// 设置菜单的上下文帮助标识符为 IDH_MYMENUmyMenu.SetMenuContextHelpId(IDH_MYMENU);上下文帮助标识符通常与帮助系统一起使用,以提供用户帮助信息。当用户在菜单上移动鼠标时,帮助系统可以使用上下文帮助标识符来确定要显示的相关帮助信息。请注意,具体的上下文帮助功能可能需要在你的应用程序中启用和配置,以确保正确的帮助信息被显示。
MFC CMenu 类 公共方法:CMenu::SetDefaultItem
CMenu::SetDefaultItem 是 MFC(Microsoft Foundation Classes)中 CMenu 类的一个公共方法,用于设置菜单的默认项。以下是该方法的一般语法:void SetDefaultItem(UINT uItem, BOOL bByPos = FALSE);参数说明: uItem:默认项的标识,可以是菜单项的 ID 或相对位置,具体取决于 bByPos 参数。 bByPos:一个布尔值,指示 uItem 参数的类型。如果为 TRUE,表示 uItem 是相对位置;如果为 FALSE,表示 uItem 是菜单项的 ID。使用示例:CMenu myMenu;myMenu.LoadMenu(IDR_MYMENU);// 将 ID 为 IDM_DEFAULT_ITEM 的菜单项设置为默认项myMenu.SetDefaultItem(IDM_DEFAULT_ITEM);通过调用这个方法,你可以在菜单中设置默认项,该项在菜单显示时会被加亮显示。在用户按下 Enter 键时,将执行该默认项对应的命令。这通常用于指示用户在菜单中可以通过 Enter 键快速选择...
MFC CMenu 类 公共方法:CMenu::RemoveMenu
CMenu::RemoveMenu 是 MFC(Microsoft Foundation Classes)中 CMenu 类的一个公共方法,用于移除指定菜单项或子菜单。以下是该方法的一般语法:BOOL RemoveMenu(UINT nPosition, UINT nFlags);参数说明: nPosition:要移除的菜单项或子菜单的位置标识。可以是菜单项的相对位置(从0开始计数),也可以是标志位 MF_BYPOSITION 或 MF_BYCOMMAND 加上菜单项或子菜单的 ID。 nFlags:指定标志位,可以是以下值之一: - MF_BYCOMMAND:nPosition 是菜单项或子菜单的 ID。 - MF_BYPOSITION:nPosition 是菜单项或子菜单的相对位置。返回值: 如果成功移除菜单项或子菜单,则返回非零;否则,返回零。示例:CMenu myMenu;myMenu.LoadMenu(IDR_MYMENU);// 移除位置为 1 的菜单项(相对位置,从0开始计数)myMenu.RemoveMenu(1, MF_BYPOSITION);// 或者,移除 I...
MFC CMenu 类 公共方法:CMenu::ModifyMenu
CMenu::ModifyMenu 是 MFC 中 CMenu 类的一个公共方法,用于修改菜单中指定位置或标识的一个菜单项的属性或内容。该方法可以用于改变菜单项的文本、ID、标志等。以下是 CMenu::ModifyMenu 方法的基本信息:BOOL ModifyMenu( UINT nPosition, UINT nFlags, UINT_PTR nIDNewItem = 0, LPCTSTR lpszNewItem = NULL);参数解释: nPosition:菜单项的位置或标识。 nFlags:指定要如何修改菜单项的标志,例如,MF_BYPOSITION 表示使用位置,MF_BYCOMMAND 表示使用标识。 nIDNewItem:新的菜单项标识。如果不想改变标识,可以设置为 0。 lpszNewItem:新的菜单项文本。如果不想改变文本,可以设置为 NULL。下面是一个简单的示例,演示如何使用 ModifyMenu 方法:CMenu myMenu;myMenu.LoadMenu(IDR_MYMENU); // 载入菜单资源// 假设我们要修改第一个菜单项的文...
MFC CMenu 类 公共方法:CMenu::MeasureItem
CMenu::MeasureItem 是 MFC 中 CMenu 类的一个公共方法,用于测量菜单项的大小。它是一个虚拟函数,可以被重写以提供自定义的菜单项大小。以下是 CMenu::MeasureItem 方法的基本信息:virtual void MeasureItem( LPMEASUREITEMSTRUCT lpMeasureItemStruct);参数 lpMeasureItemStruct 是一个指向 MEASUREITEMSTRUCT 结构的指针,该结构包含了有关菜单项尺寸的信息。您可以在重写该方法时使用这些信息来指定自定义的菜单项大小。下面是一个简单的示例,演示如何在派生的菜单类中重写 MeasureItem 方法:class CMyMenu : public CMenu{public: virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct); // 其他成员和函数声明...};void CMyMenu::MeasureItem(LPMEASUREITEMSTRUCT lpMeasu...
MFC CMenu 类 公共方法:CMenu::LoadMenuIndirect
CMenu::LoadMenuIndirect 是 MFC 中 CMenu 类的一个公共方法,用于通过 MENUITEMTEMPLATE 结构加载动态创建的菜单。以下是 CMenu::LoadMenuIndirect 的基本用法:CMenu myMenu;// 假设你有一个 MENUITEMTEMPLATE 结构数组MENUITEMTEMPLATE menuTemplate[] ={ { 0, // 样式 1, // 标识符 0, // 项目字符串偏移量 }, // 添加更多的菜单项...};// 创建一个 HMENU 句柄,可以是通过 CreatePopupMenu() 创建的HMENU hMenu = CreateMenu();// 使用 LoadMenuIndirect 加载动态创建的菜单myMenu.Attach(hMenu);myMenu.LoadMenuIndirect(menuTemplate, nullptr);在这个例子中,menuTemplate 是一个 MENUITEMTEMPLATE 结构数组,每...
MFC CMenu 类 公共方法:CMenu::LoadMenu
CMenu::LoadMenu 是 MFC 中 CMenu 类的一个公共方法,用于加载菜单资源。以下是 CMenu::LoadMenu 的基本用法:CMenu myMenu;myMenu.LoadMenu(IDR_MAIN_MENU); // 替换为你的菜单资源的ID在这个例子中,IDR_MAIN_MENU 是你的菜单资源的资源标识符。LoadMenu 方法加载指定资源标识符的菜单,并将其关联到 CMenu 对象中。通常,你会在 OnInitMenuPopup 或者其他合适的地方使用 LoadMenu 来动态加载菜单。例如:void CYourWndClass::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu){ CWnd::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu); if (!bSysMenu) { // 非系统菜单弹出时,加载菜单资源 pPopupMenu->LoadMenu(IDR_POPUP_MENU...
MFC CMenu 类 公共方法:CMenu::InsertMenuItem
在 MFC(Microsoft Foundation Classes)中,CMenu::InsertMenuItem 是一个公共方法,用于在菜单中插入一个新的菜单项。以下是 CMenu::InsertMenuItem 的基本用法:CMenu myMenu;// 在这里创建或加载菜单MENUITEMINFO mii;mii.cbSize = sizeof(MENUITEMINFO);mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE; // 根据需要插入的信息设置标志mii.wID = 1001; // 替换为你为新菜单项指定的标识符mii.fType = MFT_STRING; // 替换为菜单项的类型,例如 MFT_STRING 表示字符串类型mii.dwTypeData = _T("New Menu Item"); // 替换为你为新菜单项指定的文本mii.fState = MFS_ENABLED; // 替换为菜单项的初始状态,例如 MFS_ENABLED 表示启用状态int nPosition = 2; //...
MFC CMenu 类 公共方法:CMenu::InsertMenu
以下是 CMenu::InsertMenu 的基本用法:CMenu myMenu;// 在这里创建或加载菜单UINT nFlags = MF_BYPOSITION | MF_STRING; // 根据位置插入,且标记为字符串菜单项UINT nIDNewItem = 1001; // 替换为你为新菜单项指定的标识符LPCTSTR lpszNewItem = _T("New Menu Item"); // 替换为你为新菜单项指定的文本int nPosition = 2; // 替换为你要插入的位置索引myMenu.InsertMenu(nPosition, nFlags, nIDNewItem, lpszNewItem);在这个例子中,nPosition 是你要插入的位置索引,从0开始计数。nFlags 参数用于指定插入的方式,MF_BYPOSITION 表示按位置插入,MF_STRING 表示这是一个字符串菜单项。nIDNewItem 是新菜单项的标识符,lpszNewItem 是新菜单项的文本。请注意,如果 nPosition 超出了菜单的范围,新的菜单项将...
MFC CMenu 类 公共方法:CMenu::GetSubMenu
以下是 CMenu::GetSubMenu 的基本用法:CMenu myMenu;// 在这里创建或加载菜单int nSubMenuIndex = 0; // 替换为你想获取的子菜单的索引CMenu* pSubMenu = myMenu.GetSubMenu(nSubMenuIndex);if (pSubMenu != nullptr){ // 获取到了子菜单 // 使用 pSubMenu 进行进一步的操作}在这个例子中,nSubMenuIndex 是你想获取的子菜单的索引,从0开始计数。GetSubMenu 返回一个指向 CMenu 对象的指针,该对象代表了指定索引处的子菜单。请注意,如果指定的索引无效或者对应的菜单项不是一个弹出式菜单,GetSubMenu 将返回 nullptr。
MFC CMenu 类 公共方法:CMenu::GetMenuString
以下是 CMenu::GetMenuString 的基本用法:CMenu myMenu;// 在这里创建或加载菜单CString strMenuItem;UINT nItemID = ID_MENU_ITEM; // 替换为你要获取文本的菜单项的IDint nLength = myMenu.GetMenuString(nItemID, strMenuItem.GetBufferSetLength(256), 256, MF_BYCOMMAND);strMenuItem.ReleaseBuffer();if (nLength > 0){ // 获取到了菜单项的文本 // strMenuItem 包含菜单项的文本内容}在这个例子中,nItemID 是你要获取文本的菜单项的标识符。MF_BYCOMMAND 表示通过命令标识符获取菜单项的文本。GetMenuString 返回的是拷贝到缓冲区的字符数,如果返回值为0,表示未能获取文本,可能是由于指定的菜单项不存在。
MFC CMenu 类 公共方法:CMenu::GetMenuState
在 MFC 中,CMenu::GetMenuState 是一个公共方法,用于获取菜单项的状态信息。这个方法允许你查询菜单项是否可用、选中或灰显等状态。以下是 CMenu::GetMenuState 的基本用法:CMenu myMenu;// 在这里创建或加载菜单UINT nItemID = ID_MENU_ITEM; // 替换为你要查询的菜单项的IDUINT nState = myMenu.GetMenuState(nItemID, MF_BYCOMMAND);if (nState != 0xFFFFFFFF){ // 获取到了菜单项的状态信息 if (nState & MF_DISABLED) { // 菜单项被禁用 } if (nState & MF_CHECKED) { // 菜单项被选中 } // 其他状态判断...}在这个例子中,nItemID 是你要查询的菜单项的标识符。MF_BYCOMMAND 表示通过命令标识符查询菜单项的状态。GetMenuState 返回一个表示菜单项状态...
MFC CMenu 类 公共方法:CMenu::GetMenuItemInfo
在 MFC 中,CMenu::GetMenuItemInfo 是一个公共方法,用于获取有关菜单项的详细信息。这个方法通常用于检索菜单项的属性,例如文本、状态等。以下是 CMenu::GetMenuItemInfo 的基本用法:CMenu myMenu;// 在这里创建或加载菜单MENUITEMINFO mii;mii.cbSize = sizeof(MENUITEMINFO);mii.fMask = MIIM_ID | MIIM_TYPE; // 获取菜单项的标识符和类型信息mii.wID = 0; // 设置为目标菜单项的IDmii.dwTypeData = nullptr;mii.cch = 0;if (myMenu.GetMenuItemInfo(nIndex, &mii, TRUE)){ UINT nItemID = mii.wID; // 菜单项的标识符 // 其他相关信息可以在 mii 结构中找到}在这个例子中,nIndex 是菜单项的位置索引,mii 是一个 MENUITEMINFO 结构,用于指定要获取的信息和存储结果。在调用 GetMenuI...
MFC CMenu 类 公共方法:CMenu::GetMenuItemID
在 MFC 中,CMenu::GetMenuItemID 是一个公共方法,用于获取指定位置的菜单项的标识符(ID)。以下是 CMenu::GetMenuItemID 的基本用法:CMenu myMenu;// 在这里创建或加载菜单UINT nItemID = myMenu.GetMenuItemID(nIndex);// nItemID 现在包含指定位置的菜单项的标识符其中,nIndex 是菜单项的位置索引,从 0 开始计数。如果 nIndex 是有效的,nItemID 将包含相应菜单项的标识符。请注意,nItemID 为 0 表示菜单项无效。这可能发生在分隔符等无关联标识符的菜单项上。
MFC CMenu 类 公共方法:CMenu::GetMenuItemCount
以下是 CMenu::GetMenuItemCount 的基本用法:CMenu myMenu;// 在这里创建或加载菜单int nItemCount = myMenu.GetMenuItemCount();// nItemCount 现在包含菜单中的菜单项数量这个方法返回整数值,表示菜单中的菜单项数量。你可以使用这个值来遍历菜单项或者进行其他相关的操作。
MFC CMenu 类 公共方法:CMenu::GetDefaultItem
在MFC(Microsoft Foundation Classes)中,没有 CMenu::FromHandle 这个具体的方法。通常情况下,MFC中的 CMenu 对象是通过菜单资源或者动态创建来获得的,而不是通过句柄。如果你已经有一个菜单句柄(HMENU),你可以使用 CMenu 构造函数来创建一个 CMenu 对象,并关联这个句柄。例如:HMENU hMenu = ::CreateMenu(); // 这里可以是你的菜单句柄CMenu myMenu;myMenu.Attach(hMenu);// 使用 myMenu 对象进行操作// 在不再需要 myMenu 对象时,最好调用 Detach 分离句柄myMenu.Detach();这种方式可以将一个 HMENU 句柄关联到一个 CMenu 对象上,从而使用 CMenu 类提供的方法对菜单进行操作。
MFC CMenu 类 公共方法:CMenu::EnableMenuItem
下面是 CMenu::EnableMenuItem 方法的基本用法:CMenu myMenu;// 在这里创建或加载菜单// 启用或禁用菜单项myMenu.EnableMenuItem(ID_MENU_ITEM, MF_ENABLED); // 启用// 或myMenu.EnableMenuItem(ID_MENU_ITEM, MF_DISABLED | MF_GRAYED); // 禁用其中,ID_MENU_ITEM 是你要启用或禁用的菜单项的标识符。第二个参数可以是以下之一或它们的组合: MF_ENABLED: 启用菜单项。 MF_DISABLED 或 MF_GRAYED: 禁用菜单项。你可以在需要的时候调用这个方法,根据程序的状态动态地启用或禁用菜单项。这对于实现用户界面的交互性非常有用。请注意,CMenu::EnableMenuItem 返回一个表示原始状态的旧状态,你可以在调用后检查这个值以了解之前的状态。
MFC CMenu 类 公共方法:CMenu::Detach
在 MFC(Microsoft Foundation Classes)中,CMenu::Detach 是一个公共方法,用于分离 CMenu 对象和其关联的 Windows 菜单句柄。这样可以在不销毁菜单的情况下将其从 CMenu 对象中分离,从而允许你在其他地方继续使用这个菜单句柄。以下是 CMenu::Detach 的基本用法:CMenu myMenu;// 在这里创建或加载菜单HMENU hMenu = myMenu.Detach();// 此时 myMenu 不再关联菜单句柄// 可以在其他地方使用 hMenu,但注意需要负责管理它的生命周期// 最终释放 hMenu,避免资源泄漏::DestroyMenu(hMenu);在使用 Detach 后,CMenu 对象不再包含菜单句柄,但你仍然可以在其他地方使用 HMENU 句柄。记得在不再需要这个句柄时手动释放相关资源。这样的功能通常用于将 MFC 中的菜单对象传递给非 MFC 的代码,或者在不销毁菜单的情况下重新分配给其他 CMenu 对象。
MFC CMenu 类 公共方法:CMenu::DestroyMenu
具体的使用方式如下:CMenu myMenu;// 在这里创建或加载菜单// 使用完菜单后,销毁菜单对象myMenu.DestroyMenu();调用 DestroyMenu 方法后,CMenu 对象将不再包含有效的菜单句柄,并释放相应的资源。这通常在你不再需要使用菜单对象时调用,以避免内存泄漏和资源浪费。请确保在使用完菜单后调用 DestroyMenu,以便在不再需要菜单时正确释放资源。
MFC CMenu 类 公共方法:CMenu::DeleteMenu
CMenu::DeleteMenu 是 MFC(Microsoft Foundation Classes)中的 CMenu 类的一个公共方法,用于删除菜单中的指定菜单项或子菜单。以下是 DeleteMenu 方法的声明:BOOL DeleteMenu( _In_ UINT nPosition, _In_ UINT nFlags); nPosition:指定要删除的菜单项的位置或标识符。可以是位置(MF_BYPOSITION)或菜单项的命令标识符。 nFlags:删除菜单项的标志,可以是以下值之一: - MF_BYCOMMAND:按命令标识符删除菜单项。 - MF_BYPOSITION:按位置删除菜单项。该方法返回一个 BOOL 类型的值,表示删除菜单项是否成功。示例:CMenu myMenu;myMenu.CreatePopupMenu(); // 创建一个弹出菜单// 在菜单中追加一组菜单项myMenu.AppendMenu(MF_STRING, ID_MENU_ITEM1, _T("Item 1"));myMenu.AppendMenu(MF_ST...