2012-02-08 2 views
1

Существует множество статей, связанных с настройкой главного меню диалогового окна, включая «настраиваемые» меню. Но никто из них, кажется, не ответил на мой вопрос.Пользовательское расположение главного меню диалогового окна Windows

У меня есть (без полей) окна, которое имеет обычай нарисованного по названию руки бар:

мне нужно отобразить как-то главное меню под этим «жиром» в строке заголовка. Как я могу это сделать, используя MFC? По умолчанию «родные» меню, похоже, могут быть расположены только в верхней части клиентской области диалогового окна (или я здесь не прав?). Есть ли решение для моей проблемы? Если кто-то может дать некоторые ссылки, связанные с моей проблемой, я бы очень признателен! Я видел много продуктов, которые реализуют это, например, Ontrack приходит на ум, но никогда не встречал никаких объяснений о том, как это было достигнуто. Спасибо!

ответ

1

Мне нужно как-то отобразить главное меню под этой «толстой» строкой заголовка.

Вот именно там, где она является втягивается, по изображению, публикуемыми.

По умолчанию «родные» меню, по-видимому, могут находиться только в верхней части клиентской области диалогового окна (или я здесь не прав?).

Нет, это правильно. Меню будет автоматически нарисовано, когда строки меню принадлежат: в верхней части окна, чуть ниже строки заголовка.

Вы решили испортить настройки по умолчанию и бросить юзабилити своего приложения в ад, переопределив неклиентскую область. Это означает, что вы не можете полагаться на Windows, чтобы нарисовать эти элементы для вас. Вместо этого вам нужно будет взять на себя ответственность за то, что вы все это сами нарисовали, для чего вам нужно написать код для этого. Я не знаю, что такое «Ontrack», но любое приложение, которое делает это, рисует владельцем свои меню.

Другой популярный вариант (используемый Internet Explorer на некоторое время) - это создать свой собственный объект, подобный меню, используя элемент управления арматурой. Это имеет то преимущество, что оно интегрируется в существующее управление на панели инструментов и позволяет пользователю изменять позиции по желанию. У него, как и написание собственного элемента управления меню, есть недостаток в том, что он не соответствует стандартным соглашениям на платформе и ожиданиям пользователей (хотя, вероятно, это намного лучше, чем вы можете придумать сами). Существует практическая статья here on MSDN.

Я подозреваю, что при осуществлении этого проекта вы, вероятно, откусили больше, чем можете пережевывать. Имейте в виду, что вряд ли когда-либо (хотя бы это) есть причина, чтобы нарисовать свой собственный заголовок. Как вы видите, в соответствии со стандартными ожиданиями вашей платформы часто проще программист и гораздо лучше, чем ваши пользователи.

+0

Коди, спасибо за подробный ответ. Я буду копаться в этих панелях инструментов меню, мне кажется, что мне нужно. Этот «скриншот» был фактически сделан в фотошопе, чтобы показать, что я хочу получить :-). – justme11