У меня есть диалоговое приложение, в котором я хочу, чтобы в верхней части диалогового окна были кликабельные пункты меню. Эти элементы не отображают раскрывающееся меню, но на самом деле запускают соответствующие команды.
Я сделал это, установив Popup = False в свойствах диалогов и назначив идентификатор сообщения, но моя проблема не в том, чтобы правильно отключить элемент, если для элемента нет смысла нажимать кнопку (в зависимости от внутреннего состояния). сохраняется в диалоге)
Я уже узнал, как отключить любые элементы всплывающего родительского меню из http://www.microsoft.com/msj/0299/c/c0299.aspx,, но это не совсем то, что я хочу
Я также узнал, как добавить маршрутизацию команд меню в диалоги из статьи базы знаний msdn KB242577.
Это прекрасно работает для пунктов подменю, но не для меню верхнего уровня.
В настоящее время я использую следующую функцию для отключения
void CYourDlg::EnableMenuItem(UINT nCommand, BOOL bEnable)
{
CMenu* pMenu = GetMenu();
pMenu->EnableMenuItem(nCommand, bEnable ? 0 : MF_DISABLED | MF_GRAYED);
}
Эта половина работает, если вы покидаете alt-tab из приложения, она отображается как отключенная, в противном случае это не так.
Есть ли способ сделать область недействительной программно?
Я думаю, что может быть вовлечено сообщение, не относящееся к области клиента.