创建一个没有复选框的弹出式 CMenu
Creating a popup CMenu without a checkbox
我正在 Visual Studio 2010 中创建一个 CMenu,MFC。我有一个工作的 CMenu,当用户 right-clicks 在对话框中出现时。我似乎无法找到一种方法来创建菜单选择 而没有 复选框的位置。在 Visual Studio 的设计器中,我的菜单是这样的:
我想删除勾选区域。在我的应用程序中,我的菜单如下所示:
有没有办法删除 "Change Option" 左边的这个小方框?
更新: 不确定这是否有帮助,但这是我创建 CMenu 的代码:
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MENU1));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CWnd* pWndPopupOwner = this;
while (pWndPopupOwner->GetStyle() & WS_CHILD)
pWndPopupOwner = pWndPopupOwner->GetParent();
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, screenPoint.x, screenPoint.y,
pWndPopupOwner);
为此您必须使用自绘菜单。弹出菜单总是(默认情况下)为复选标记位图分配 space。使用所有者绘制将允许您使用 CMenu::MeasureItem()
和 CMenu::DrawItem()
根据您的需要自定义菜单对象的大小和绘制行为。
我正在 Visual Studio 2010 中创建一个 CMenu,MFC。我有一个工作的 CMenu,当用户 right-clicks 在对话框中出现时。我似乎无法找到一种方法来创建菜单选择 而没有 复选框的位置。在 Visual Studio 的设计器中,我的菜单是这样的:
我想删除勾选区域。在我的应用程序中,我的菜单如下所示:
有没有办法删除 "Change Option" 左边的这个小方框?
更新: 不确定这是否有帮助,但这是我创建 CMenu 的代码:
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MENU1));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CWnd* pWndPopupOwner = this;
while (pWndPopupOwner->GetStyle() & WS_CHILD)
pWndPopupOwner = pWndPopupOwner->GetParent();
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, screenPoint.x, screenPoint.y,
pWndPopupOwner);
为此您必须使用自绘菜单。弹出菜单总是(默认情况下)为复选标记位图分配 space。使用所有者绘制将允许您使用 CMenu::MeasureItem()
和 CMenu::DrawItem()
根据您的需要自定义菜单对象的大小和绘制行为。