MFC CMenu 类 公共方法:CMenu::GetMenuState
CMenu::GetMenuState 是 MFC 中 CMenu 类的一个公共方法,用于获取菜单项的状态信息。该方法的原型如下:UINT GetMenuState( UINT nID, UINT nFlags) const;其中参数含义如下: nID:菜单项的标识符。 nFlags:用于指定获取状态信息的标志。可以是以下常量之一: - MF_BYCOMMAND:表示 nID 参数是菜单项的标识符。 - MF_BYPOSITION:表示 nID 参数是菜单项的位置。返回值是表示菜单项状态的一个 UINT 值,具体的状态信息可以使用一些预定义的常量进行检查,例如: MF_ENABLED:菜单项可用。 MF_DISABLED:菜单项被禁用。 MF_CHECKED:菜单项被选中。 MF_UNCHECKED:菜单项未被选中。 MF_GRAYED:菜单项灰显,表示不可用。以下是一个简单的例子,演示如何使用 GetMenuState 方法获取菜单项的状态:CMenu menu;// 假设有一个有效的菜单对象UINT menuItemID = IDM_MY_MENU_ITEM; // 替...
MFC CMenu 类 公共方法:CMenu::GetMenuItemInfo
CMenu::GetMenuItemInfo 是 MFC 中 CMenu 类的一个公共方法,用于获取菜单项的信息。该方法的原型如下:BOOL GetMenuItemInfo( UINT uItem, LPMENUITEMINFO lpMenuItemInfo, BOOL fByPosition = FALSE) const;其中参数含义如下: uItem:指定菜单项的标识符或位置。 lpMenuItemInfo:指向 MENUITEMINFO 结构的指针,用于接收菜单项的信息。 fByPosition:如果为 TRUE,则 uItem 参数被解释为菜单项的位置;如果为 FALSE,则 uItem 参数被解释为菜单项的标识符。MENUITEMINFO 结构定义如下:typedef struct tagMENUITEMINFO { UINT cbSize; UINT fMask; UINT fType; UINT fState; UINT wID; HMENU hSubMenu; HBITMAP hbm...
MFC CMenu 类 公共方法:CMenu::GetMenuItemID
CMenu::GetMenuItemID 是 MFC 中 CMenu 类的一个公共方法,用于获取指定位置的菜单项的标识符。以下是 CMenu::GetMenuItemID 方法的一般用法:UINT GetMenuItemID( int nPos) const; nPos: 要获取标识符的菜单项的位置索引。可以是菜单项的相对位置(0 表示第一个菜单项)。该方法返回一个 UINT 类型的值,表示指定位置的菜单项的标识符。以下是一个简单的示例,演示如何使用 CMenu::GetMenuItemID 方法获取菜单中指定位置的菜单项的标识符:CMenu menu;menu.CreateMenu(); // 创建一个新的菜单menu.AppendMenu(MF_STRING, ID_MENU_ITEM1, _T("Menu Item 1")); // 添加菜单项menu.AppendMenu(MF_STRING, ID_MENU_ITEM2, _T("Menu Item 2"));// 获取第二个菜单项的标识符UINT nItemID = menu....
MFC CMenu 类 公共方法:CMenu::GetMenuItemCount
CMenu::GetMenuItemCount 是 MFC 中 CMenu 类的一个公共方法,用于获取菜单中的菜单项数量。以下是 CMenu::GetMenuItemCount 方法的一般用法:int GetMenuItemCount() const;该方法不需要参数,返回一个 int 类型的值,表示菜单中的菜单项数量。以下是一个简单的示例,演示如何使用 CMenu::GetMenuItemCount 方法获取菜单中的菜单项数量:CMenu menu;menu.CreateMenu(); // 创建一个新的菜单// 在这里添加菜单项...// 获取菜单项数量int nMenuItemCount = menu.GetMenuItemCount();TRACE(_T("Number of menu items: %d\n"), nMenuItemCount);在这个示例中,我们首先使用 CreateMenu 方法创建一个新的菜单,然后在菜单中添加了一些菜单项。最后,通过调用 GetMenuItemCount 方法获取菜单中的菜单项数量,并将其输出到 TRACE 中。请...
MFC CMenu 类 公共方法:CMenu::EnableMenuItem
CMenu::EnableMenuItem 是 MFC 中 CMenu 类的一个公共方法,用于启用或禁用菜单中的指定菜单项。以下是 CMenu::EnableMenuItem 方法的一般用法:BOOL EnableMenuItem( UINT nIDEnableItem, UINT nEnable); nIDEnableItem: 要启用或禁用的菜单项的标识符。 nEnable: 指定菜单项的新状态。可以是以下常量之一: - MF_ENABLED: 启用菜单项。 - MF_DISABLED: 禁用菜单项。 - MF_BYCOMMAND: 表示 nIDEnableItem 是命令标识符。该方法返回一个 BOOL 类型的值,表示是否成功设置菜单项的状态。如果成功,返回非零值;否则返回零。以下是一个简单的示例,演示如何使用 CMenu::EnableMenuItem 方法启用或禁用菜单中的一个菜单项:// 假设菜单项的标识符为 ID_MENU_ITEM_TO_ENABLE_DISABLEUINT nIDEnableDisableItem = ID_MENU_ITEM_TO_EN...
MFC CMenu 类 公共方法:CMenu::DrawItem
CMenu::DrawItem 不是 CMenu 类的公共方法。在 MFC 中,CMenu 类通常用于菜单的创建、操作和显示,而 DrawItem 更常用于自定义绘制操作,通常与窗口控件(如列表框、组合框等)中的自绘制相关。如果你需要在菜单项上进行自定义绘制,通常需要处理菜单的 WM_DRAWITEM 消息,而不是调用 CMenu 类的方法。具体的实现可能需要使用 MeasureItem 方法来设置菜单项的大小,然后在 DrawItem 中执行绘制操作。以下是一个简单的示例,演示如何在菜单项上进行自定义绘制:// 假设菜单项的标识符为 ID_MENU_ITEM_TO_DRAWUINT nIDItemToDraw = ID_MENU_ITEM_TO_DRAW;// 响应 WM_DRAWITEM 消息void CYourWndClass::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct){ if (lpDrawItemStruct->CtlType == ODT_MENU) { // 判断是否...
MFC CMenu 类 公共方法:CMenu::Detach
CMenu::Detach 是 MFC 中 CMenu 类的一个公共方法,用于取消关联一个已经存在的菜单句柄,而不释放该句柄。以下是 CMenu::Detach 方法的一般用法:HMENU Detach();该方法不需要参数,返回一个 HMENU 句柄,表示被取消关联的菜单句柄。此方法允许你将 CMenu 对象与一个菜单句柄关联,并在不销毁该句柄的情况下取消关联。以下是一个简单的示例,演示如何使用 CMenu::Detach 方法:CMenu menu;menu.CreateMenu(); // 创建一个新的菜单// 在这里添加菜单项...// 取消关联并获取菜单句柄HMENU hMenu = menu.Detach();// 在这里可以使用 hMenu 进行其他操作,而不影响 menu 对象// 最后,记得在不再需要 hMenu 时销毁它::DestroyMenu(hMenu);在这个示例中,我们首先使用 CreateMenu 方法创建一个新的菜单,然后在菜单中添加了一些菜单项。接着,通过调用 Detach 方法取消关联并获取菜单句柄,这样我们可以在不影响 menu 对象的情况下对...
MFC CMenu 类 公共方法:CMenu::DestroyMenu
CMenu::DestroyMenu 是 MFC 中 CMenu 类的一个公共方法,用于销毁菜单对象并释放与之相关联的资源。以下是 CMenu::DestroyMenu 方法的一般用法:BOOL DestroyMenu();该方法不需要参数,返回一个 BOOL 类型的值,表示是否成功销毁菜单。如果成功,返回非零值;否则返回零。以下是一个简单的示例,演示如何使用 CMenu::DestroyMenu 方法销毁一个菜单对象:CMenu menu;menu.CreateMenu(); // 创建一个新的菜单// 在这里添加菜单项...// 销毁菜单对象menu.DestroyMenu();在这个示例中,我们首先使用 CreateMenu 方法创建一个新的菜单,然后在菜单中添加了一些菜单项。最后,通过调用 DestroyMenu 方法销毁了菜单对象,释放了相关资源。请根据实际需求调整参数和方法的使用。
MFC CMenu 类 公共方法:CMenu::DeleteMenu
CMenu::DeleteMenu 是 MFC 中 CMenu 类的一个公共方法,用于删除菜单中的指定菜单项。以下是 CMenu::DeleteMenu 方法的一般用法:BOOL DeleteMenu( UINT nPosition, UINT nFlags); nPosition: 要删除的菜单项的位置索引。可以是菜单项的相对位置(0 表示第一个菜单项)或者是标识符 ID。 nFlags: 标志,指定如何解释 nPosition。可以是以下常量之一: - MF_BYCOMMAND: 表示 nPosition 是一个标识符。 - MF_BYPOSITION: 表示 nPosition 是相对于菜单的位置。该方法返回一个 BOOL 类型的值,表示是否成功删除菜单项。如果成功,返回非零值;否则返回零。以下是一个简单的示例,演示如何使用 CMenu::DeleteMenu 方法删除菜单中的一个菜单项:// 在创建菜单时保存了一个菜单项的标识符UINT nItemID = ID_MENU_ITEM_TO_DELETE;// 删除菜单项menu.DeleteMenu(nItemID,...
MFC CMenu 类 公共方法:CMenu::CreatePopupMenu
CMenu::CreatePopupMenu 是 MFC 中 CMenu 类的一个公共方法,用于创建一个新的弹出子菜单(CMenu 对象)。以下是 CMenu::CreatePopupMenu 方法的一般用法:BOOL CreatePopupMenu();该方法不需要参数,返回一个 BOOL 类型的值,表示创建弹出子菜单是否成功。成功创建返回非零值,否则返回零。以下是一个简单的示例,演示如何使用 CMenu::CreatePopupMenu 方法创建一个新的弹出子菜单:CMenu submenu;submenu.CreatePopupMenu(); // 创建一个新的弹出子菜单submenu.AppendMenu(MF_STRING, ID_SUBMENU_ITEM1, _T("Submenu Item 1")); // 添加子菜单项submenu.AppendMenu(MF_STRING, ID_SUBMENU_ITEM2, _T("Submenu Item 2"));CMenu menu;menu.CreateMenu(); // 创建...
MFC CMenu 类 公共方法:CMenu::CreateMenu
CMenu::CreateMenu 是 MFC 中 CMenu 类的一个公共方法,用于创建一个新的弹出菜单。以下是 CMenu::CreateMenu 方法的一般用法:BOOL CreateMenu();该方法不需要参数,返回一个 BOOL 类型的值,表示创建菜单是否成功。成功创建菜单返回非零值,否则返回零。以下是一个简单的示例,演示如何使用 CMenu::CreateMenu 方法创建一个新的弹出菜单:CMenu menu;menu.CreateMenu(); // 创建一个新的菜单menu.AppendMenu(MF_STRING, ID_MENU_ITEM1, _T("Menu Item 1")); // 添加菜单项menu.AppendMenu(MF_STRING, ID_MENU_ITEM2, _T("Menu Item 2"));// 将菜单关联到窗口SetMenu(&menu);在这个示例中,我们首先调用 CreateMenu 方法创建一个新的菜单,然后使用 AppendMenu 方法添加两个菜单项,最后将菜单关联到窗口...
MFC CMenu 类 公共方法:CMenu::CheckMenuRadioItem
CMenu::CheckMenuRadioItem 是 MFC 中 CMenu 类的一个公共方法,用于在菜单中设置一组相关的菜单项中的一个项为选中状态,同时取消其他项的选中状态。以下是 CMenu::CheckMenuRadioItem 方法的一般用法:BOOL CheckMenuRadioItem( UINT nIDFirst, UINT nIDLast, UINT nIDItem, UINT nFlags = MF_BYCOMMAND); nIDFirst 和 nIDLast: 定义一个范围,表示一组相关的菜单项的标识符。 nIDItem: 指定要设置为选中状态的菜单项的标识符。 nFlags: 指定标识符是按命令还是按位置来解释。可以是 MF_BYCOMMAND 或 MF_BYPOSITION。此方法通常用于实现一组单选菜单项,确保在一组相关的项中只有一个被选中。以下是一个简单的示例:// 假设菜单项的标识符范围为 ID_MENU_ITEM_FIRST 到 ID_MENU_ITEM_LASTUINT nIDFirst = ID_MENU_ITEM_FIRST;UI...
MFC CMenu 类 公共方法:CMenu::CheckMenuItem
CMenu::CheckMenuItem 是 MFC 中 CMenu 类的一个公共方法,用于在菜单中设置或取消菜单项的选中状态。以下是 CMenu::CheckMenuItem 方法的一般用法:BOOL CheckMenuItem( UINT nIDCheckItem, UINT nCheck); nIDCheckItem: 要设置或取消选中状态的菜单项的标识符。 nCheck: 指定菜单项的新状态。可以是以下常量之一: - MF_CHECKED: 设置菜单项为选中状态。 - MF_UNCHECKED: 取消菜单项的选中状态。 - MF_BYCOMMAND: 表示 nIDCheckItem 是命令标识符。例如,以下是一个简单的示例,演示如何使用 CMenu::CheckMenuItem 方法设置菜单项的选中状态:// 假设菜单项的标识符为 ID_MENU_ITEMUINT nIDCheckItem = ID_MENU_ITEM;// 获取菜单项的当前状态UINT nCurrentState = GetMenu()->GetMenuState(nIDCheckItem...
MFC CMenu 类 公共方法:CMenu::Attach
在 MFC 中,CMenu::Attach 方法是用于将一个已有的菜单句柄附加到 CMenu 对象的方法。这个方法的声明如下:BOOL Attach( HMENU hMenu); hMenu: 要附加的菜单句柄。Attach 方法允许你将一个原生的 Windows 菜单句柄与 CMenu 对象关联起来,这样你就可以使用 CMenu 的其他方法来对菜单进行操作。这在某些情况下很有用,比如在已有的菜单句柄上进行进一步的 MFC 操作。以下是一个简单的示例:HMENU hExistingMenu = ::LoadMenu(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_EXISTING_MENU));CMenu existingMenu;existingMenu.Attach(hExistingMenu);// 然后你可以使用 existingMenu 对象来进行其他操作,比如获取子菜单,添加菜单项等// 最后,记得在不再需要的时候调用 Detach 方法,以防止资源泄漏existingMenu.Detach();在这个示例中,我们首先加载一个菜单...
MFC CMenu 类 公共方法:CMenu::AppendMenu
CMenu::AppendMenu 是 MFC 中 CMenu 类的一个公共方法,用于向菜单添加新的菜单项。以下是 CMenu::AppendMenu 方法的一般用法:BOOL AppendMenu( UINT nFlags, UINT_PTR nIDNewItem = 0, LPCTSTR lpszNewItem = NULL); nFlags: 指定菜单项的标志,可以是以下之一或它们的组合: - MF_STRING: 菜单项为字符串。 - MF_SEPARATOR: 菜单项为分隔线。 - MF_POPUP: 菜单项为弹出子菜单,nIDNewItem 应该是子菜单的句柄。 nIDNewItem: 菜单项的标识符。对于字符串菜单项,可以将其设置为 0。对于弹出子菜单,应该设置为子菜单的句柄。 lpszNewItem: 菜单项的文本。对于分隔线,可以将其设置为 NULL。以下是一个简单的示例,演示如何使用 CMenu::AppendMenu 方法添加菜单项:CMenu menu;menu.CreateMenu(); // 创建一个新菜单menu.AppendMenu(...
MFC CMenu 类 公共方法:CMenu::TrackPopupMenuEx
在 MFC 中,CMenu 类确实没有 CMenu::TrackPopupMenuEx 这个具体的公共方法。TrackPopupMenuEx 是 Windows API 中的一个函数,不是 CMenu 类的方法。TrackPopupMenuEx 函数用于在指定的位置显示弹出菜单,并提供更多的控制选项。如果你需要使用 TrackPopupMenuEx,可以直接调用它而不是调用 CMenu 的方法。以下是 TrackPopupMenuEx 函数的一般用法:BOOL TrackPopupMenuEx( HMENU hMenu, UINT fuFlags, int x, int y, HWND hWnd, LPTPMPARAMS lptpm); hMenu: 菜单句柄,即你要显示的菜单。 fuFlags: 控制菜单的外观和行为的标志,例如 TPM_LEFTALIGN、TPM_RIGHTBUTTON 等。 x 和 y: 指定弹出菜单的屏幕坐标。 hWnd: 跟踪弹出菜单的窗口句柄。 lptpm: 一个指向 TPMPARAMS 结构的指针,该结构用于更精确地控制菜单的显示位...
MFC CMenu 类 公共方法:CMenu::TrackPopupMenu
CMenu::TrackPopupMenu 是 MFC 中 CMenu 类的一个公共方法,用于在指定位置显示弹出菜单。以下是该方法的一般用法和一些重要参数的说明:BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL); nFlags: 指定弹出菜单的标志。可以是以下之一或它们的组合: - TPM_CENTERALIGN: 将弹出菜单与指定矩形区域的水平中心对齐。 - TPM_LEFTALIGN: 将弹出菜单与指定矩形区域的左边缘对齐。 - TPM_RIGHTALIGN: 将弹出菜单与指定矩形区域的右边缘对齐。 - 其他标志,如 TPM_RETURNCMD 等。 x 和 y: 指定弹出菜单的屏幕坐标。这是弹出菜单的左上角的位置。 pWnd: 指定用于跟踪弹出菜单的窗口。菜单与此窗口关联,当用户选择菜单项时,将向此窗口发送相应的命令消息。 lpRect: 指定一个矩形区域的指针,用于确定弹出菜单的位置。如果为 NULL,则使用鼠标光标的当前位置。该方法返...
MFC CMenu 类 公共方法:CMenu::SetMenuItemInfo
在 MFC(Microsoft Foundation Classes)中,CMenu::SetMenuItemInfo 是 CMenu 类的一个公共方法,用于设置菜单项的信息。以下是该方法的一般语法:BOOL SetMenuItemInfo(UINT uItem, LPMENUITEMINFO lpMenuItemInfo, BOOL bByPos = FALSE);参数说明: uItem:菜单项的标识符(ID)或相对位置,具体取决于 bByPos 参数。 lpMenuItemInfo:指向 MENUITEMINFO 结构的指针,该结构包含了要设置的菜单项的信息。 bByPos:一个布尔值,指示 uItem 参数的类型。如果为 TRUE,表示 uItem 是相对位置;如果为 FALSE,表示 uItem 是菜单项的 ID。MENUITEMINFO 结构的定义如下:typedef struct tagMENUITEMINFO { UINT cbSize; UINT fMask; UINT fType; UINT fState; UINT wID; HM...
MFC CMenu 类 公共方法:CMenu::SetMenuItemBitmaps
在 MFC(Microsoft Foundation Classes)中,CMenu::SetMenuItemBitmaps 是 CMenu 类的一个公共方法,用于为菜单项设置位图。以下是该方法的一般语法:BOOL SetMenuItemBitmaps(UINT nPosition, UINT nFlags, const CBitmap *pBitmapUnchecked, const CBitmap *pBitmapChecked);参数说明: nPosition:菜单项的位置标识,可以是相对位置(从0开始计数)或者是菜单项的ID。 nFlags:标志位,用于指示 nPosition 参数的类型。可以是 MF_BYCOMMAND(表示 nPosition 是菜单项的ID)或者 MF_BYPOSITION(表示 nPosition 是相对位置)。 pBitmapUnchecked:未选中状态下的位图。 pBitmapChecked:选中状态下的位图。返回值: 如果成功设置位图,则返回 TRUE;否则,返回 FALSE。使用示例:CMenu myMenu;myMenu.LoadMenu(...
MFC CMenu 类 公共方法:CMenu::SetMenuInfo
在 MFC(Microsoft Foundation Classes)中,CMenu::SetMenuInfo 是 CMenu 类的一个公共方法,用于设置菜单的信息。以下是该方法的一般语法:BOOL SetMenuInfo(LPCMENUINFO lpMenuInfo);参数说明: lpMenuInfo:指向 MENUINFO 结构的指针,该结构包含了菜单的各种信息。MENUINFO 结构的定义如下:typedef struct tagMENUINFO { DWORD cbSize; DWORD fMask; DWORD dwStyle; UINT cyMax; HBRUSH hbrBack; DWORD dwContextHelpID; ULONG_PTR dwMenuData;} MENUINFO, *LPMENUINFO;参数具体含义如下: cbSize:结构的大小,以字节为单位,用于指定结构的大小。 fMask:用于指定 MENUINFO 结构中哪些成员包含有效信息的标志。 dwStyle:菜单的样式标志。 cyMax:指定菜单的最大...