Контекстное меню MFC имеет неверную высоту элементов - PullRequest
0 голосов
/ 29 января 2019

В моем приложении 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 голосов
/ 29 января 2019

Для этого требуется меню владельца.Чем вы можете установить высоту пункта меню.

Для владельцев меню рисования здесь хороший образец (старый, но должен работать).

...