MFC上下文菜单的项目高度不正确

时间:2019-01-29 05:49:38

标签: c++ menu mfc contextmenu toolbar

在MFC应用程序中,我创建一个上下文菜单:

CString strName;
strName.LoadString(IDS_EDIT_MENU);
GetContextMenuManager()->AddMenu(strName, IDR_POPUP_EDIT);

此菜单通常在资源文件中进行描述:

IDR_POPUP_EDIT MENU
BEGIN
POPUP "Edit"
BEGIN
MENUITEM "Cu&t\tCtrl+X",                ID_EDIT_CUT
MENUITEM "Copy\tCtrl+C",                ID_EDIT_COPY
MENUITEM "&Paste\tCtrl+V",              ID_EDIT_PASTE
END
END

在代码中,我在右键处理程序中显示了此菜单:

theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE);

它具有图标16x16,并且显示良好。但是后来我添加了一个浮动工具栏,它的图标为32x32。

if (!m_notesToolbar.CreateEx(this,
    TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
    CRect(1, 1, 1, 1), ID_NOTES_TOOLBAR) ||
    !m_notesToolbar.LoadToolBar(IDR_NOTES_TOOLBAR))
{
    TRACE0("Failed to create toolbar\n");
    return -1;
}

m_notesToolbar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_notesToolbar);

因此,现在上下文菜单的项目高度也为32像素。为什么?以及如何让这些具有不同高度的GUI对象?

good height

bad height

1 个答案:

答案 0 :(得分:1)

执行此操作需要ownerdraw菜单。比您可以设置菜单项的高度。

对于所有者绘制菜单而言,这里的sample很不错(虽然年代久远,但应该可以使用)。