Можно ли изменить расположение главного меню верхнего уровня в приложении MFC MDI? - PullRequest
0 голосов
/ 13 сентября 2010

У меня есть приложение с настроенной рамкой (т. Е. Заголовок / заголовок, рамки).Я настроил рамку, удалив стиль WS_CAPTION и переопределив OnNcCalcSize, чтобы зарезервировать область заголовка нестандартного размера, которую приложение рисует в OnNcPaint.

Побочным эффектом является то, что строка меню больше не отображается, чтовсе в порядке, потому что я хочу настроить внешний вид и расположение главного меню.К сожалению, я не знаю, как это сделать.Я бы хотел, чтобы меню «Файл» находилось дальше от левого края, чем со стандартной строкой меню.

Приемлемой альтернативой было бы полное удаление меню и использование OnNcHitTest, OnNcPaint и OnNcMouseMove для управленияручная замена меню верхнего уровня.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2010

Это приложение MFC MDI - InitInstance не там, где создается меню. Я пытался избавиться от меню (и преуспел, временно), но среда MFC, кажется, «откладывает это» - я думаю, что модель MDI имеет дочерние окна, изменяющие меню, но код, который это делает быть похороненным где-то во фреймворке (иначе я просто не смог точно определить, где это происходит в коде приложения, но я подозреваю, что это происходит внутри кода фреймворка MFC). Если бы я знал, где, я мог бы переопределить методы и взять контроль ... Я думаю.

Что может быть причиной для написания пользовательского элемента управления по сравнению с обработкой OnNcMouseMove & OnNcLeftButtonDown, например? Я не ожидаю, что эта функциональность понадобится в любом другом приложении (возможно, новое приложение будет написано на C #), поэтому я ищу простоту реализации, а не повторное использование кода.

0 голосов
/ 14 сентября 2010

Я никогда не видел способа изменить внешний вид стандартного меню.Вы можете удалить его (удалить код создания из InitInstance) и затем заменить его.Я бы не стал этого делать в OnNcXXX, а вместо этого создал бы новый пользовательский элемент управления, который вы бы поместили сверху.Или вы можете взглянуть на тематические меню MFC Next и написать пользовательский интерфейс визуализации интерфейса.Возможно, будет достаточно переопределить несколько оставленных функций и перейти к настройке выравнивания меню.

...