В моей программе у меня динамически генерируемое меню. Он содержит некоторые текстовые элементы с некоторым текстом и некоторые элементы изображения с динамически генерируемыми растровыми изображениями. Код, который генерирует меню, выглядит следующим образом:
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 это работало нормально (см. Рисунки):
Но Windows 10 по некоторым причинам растягивает растровое изображение меню:
Мой вопрос: возможно ли вернуть старое поведение, не делая CreateMenuBitmap
OS- зависит и / или измеряется все пункты меню? Может быть, есть какая-то опция совместимости, манифест значения et c?