Сделал менюбар из тулбара, как написано в MSDN'овской статье Creating an
Internet Explorer-style Menu Bar. Все хорошо работает, только внешний вид и
кнопочек в тулбаре не такой, а у пунктов меню в виндоус ХП. В статье о
внешнем виде ни слова. Ладно, ловим NM_CUSTOMDRAW и пытаемся нарисовать
пункты меню самостоятельно.
Да, я умею вызывать FillRect и DrawText. Но некрасиво это как-то. Я хочу
быть модным и политкорректным, хочу чтобы мои менюшки выглядели правильно в
разных ХП темах. А откуда я знаю, как они должны будут выглядеть в следующих
темах, что придумают дизайнеры из редмонда?
Поэтому хочется рисовать функциями DrawThemeBackground и DrawThemeText. Но
для этого надо получить HTHEME из OpenThemeData для меню. MSDN говорит, что
есть такой класс MENU, однако OpenThemeData(hwnd, L"MENU") возвращает NULL
для любого hwnd. Вот собственно и вопрос — как нарисовать меню в
соответствии с темой?
Здравствуйте, Кондратьев, Вы писали:
А>Привет, Олл!
А>Сделал менюбар из тулбара, как написано в MSDN'овской статье Creating an А>Internet Explorer-style Menu Bar. Все хорошо работает, только внешний вид и А>кнопочек в тулбаре не такой, а у пунктов меню в виндоус ХП. В статье о А>внешнем виде ни слова. Ладно, ловим NM_CUSTOMDRAW и пытаемся нарисовать А>пункты меню самостоятельно.
....
Посмотри имплементацию такого меню в базовых классах WTL.
Там все сделано как ты хочешь
Здравствуйте, c-smile, Вы писали:
А>>Сделал менюбар из тулбара, как написано в MSDN'овской статье Creating an А>>Internet Explorer-style Menu Bar. Все хорошо работает, только внешний вид и А>>кнопочек в тулбаре не такой, а у пунктов меню в виндоус ХП. В статье о А>>внешнем виде ни слова. Ладно, ловим NM_CUSTOMDRAW и пытаемся нарисовать А>>пункты меню самостоятельно.
CS>Посмотри имплементацию такого меню в базовых классах WTL. CS>Там все сделано как ты хочешь
Спасибо за совет, посмотрел. Они там тоже делают FillRect и DrawText
Все же остается непонятным, за какой целью в статье Parts and States среди контролов указан MENU. Неужели они собирались сделать функции "темного" рисования для меню и забыли? Или все же как-то можно до них добраться?
Было бы интересно узнать решение проблемы через OpenThemeData, если таковое имеется.
Интересно, как Вы собираетесь узнать handle окна для передачи в качестве параметра в OpenThemeData?
Ведь у меню его нет!
Здравствуйте, uav, Вы писали:
uav>Было бы интересно узнать решение проблемы через OpenThemeData, если таковое имеется. uav>Интересно, как Вы собираетесь узнать handle окна для передачи в качестве параметра в OpenThemeData? uav>Ведь у меню его нет!
К сожаленю с темами ничего не получилось. В качестве HWND я бы передал HWND тулбара, на котором и собирался рисовать. Но раз ребята из микрософта в свем WTL сами обходятся без этих функций, то значит они и вправду для меню не работают.