Как предотвратить Windows 10 от растяжения меню растровых изображений - PullRequest
2 голосов
/ 01 февраля 2020

В моей программе у меня динамически генерируемое меню. Он содержит некоторые текстовые элементы с некоторым текстом и некоторые элементы изображения с динамически генерируемыми растровыми изображениями. Код, который генерирует меню, выглядит следующим образом:

hPopupMenu = CreatePopupMenu();
InsertMenu(hPopupMenu, -1, MF_BYPOSITION | MF_STRING, IDM_ADDDATA,_T("Add..."));
InsertMenu(hPopupMenu, -1, MF_BYPOSITION | MF_STRING, IDM_SAVETOFILE, _T("Save..."));
InsertMenu(hPopupMenu, -1, MF_BYPOSITION | MF_STRING, IDM_DOSOMETHING,
  _T("Some long long long long long long long long long long long menu item text..."));
int j= 0;
for(const auto& i : Data)
{
    HBITMAP hbm= CreateMenuBitmap(i,j++);  
    InsertMenu(hPopupMenu, -1, MF_BYPOSITION | MF_BITMAP, IDM_DATA_START+j,(LPCTSTR)hbm);
}

Функция CreateMenuBitmap создает растровое изображение для указанного элемента данных. Ширина растрового изображения зависит от некоторых вещей и может варьироваться, а также ширина элементов текстового меню.

На windows 7 и 8 это работало нормально (см. Рисунки):

appearence on Windows 7 enter image description here

Но Windows 10 по некоторым причинам растягивает растровое изображение меню: enter image description here

Мой вопрос: возможно ли вернуть старое поведение, не делая CreateMenuBitmap OS- зависит и / или измеряется все пункты меню? Может быть, есть какая-то опция совместимости, манифест значения et c?

...