Member 14594285 Ответов: 2

Отключить подменю hmenu mfc


Я попытался отключить кнопку hmenu, но она не работает..

Что я уже пробовал:

Я пытался:

HMENU hMenu = ::LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_MENU1));
	EnableMenuItem(hMenu, 0, MF_DISABLED | MF_GRAYED | MF_BYPOSITION);

Shao Voon Wong

Является ли ваше приложение MFC приложением SDI/MDI?

2 Ответов

Рейтинг:
1

Shao Voon Wong

Я только что сделал Совет об отключении подменю приложения MFC SDI.

Отключить подменю MFC SDI/MDI[^]


Рейтинг:
0

Richard MacCutchan

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

hMenu = GetMenu(hWnd);  // get the top level menu*
EnableMenuItem(hMenu, 0, MF_DISABLED | MF_GRAYED | MF_BYPOSITION);


*или использовать Класс CWnd::GetMenu() | Microsoft Docs[^]

[редактировать]
Проблема в том, что вы использовали неправильный системный вызов. LoadMenu возвращает дескриптор ресурса меню в исполняемом файле. В то время как GetMenu возвращает дескриптор фактического объекта меню, прикрепленного к окну вашего приложения.
[/редактировать]