draw themed menu
От: Аноним  
Дата: 17.10.03 12:30
Оценка:
Привет, Олл!

Сделал менюбар из тулбара, как написано в MSDN'овской статье Creating an
Internet Explorer-style Menu Bar. Все хорошо работает, только внешний вид и
кнопочек в тулбаре не такой, а у пунктов меню в виндоус ХП. В статье о
внешнем виде ни слова. Ладно, ловим NM_CUSTOMDRAW и пытаемся нарисовать
пункты меню самостоятельно.

Да, я умею вызывать FillRect и DrawText. Но некрасиво это как-то. Я хочу
быть модным и политкорректным, хочу чтобы мои менюшки выглядели правильно в
разных ХП темах. А откуда я знаю, как они должны будут выглядеть в следующих
темах, что придумают дизайнеры из редмонда?

Поэтому хочется рисовать функциями DrawThemeBackground и DrawThemeText. Но
для этого надо получить HTHEME из OpenThemeData для меню. MSDN говорит, что
есть такой класс MENU, однако OpenThemeData(hwnd, L"MENU") возвращает NULL
для любого hwnd. Вот собственно и вопрос — как нарисовать меню в
соответствии с темой?

Кондратьев
Re: draw themed menu
От: c-smile Канада http://terrainformatica.com
Дата: 18.10.03 23:52
Оценка:
Здравствуйте, Кондратьев, Вы писали:

А>Привет, Олл!


А>Сделал менюбар из тулбара, как написано в MSDN'овской статье Creating an

А>Internet Explorer-style Menu Bar. Все хорошо работает, только внешний вид и
А>кнопочек в тулбаре не такой, а у пунктов меню в виндоус ХП. В статье о
А>внешнем виде ни слова. Ладно, ловим NM_CUSTOMDRAW и пытаемся нарисовать
А>пункты меню самостоятельно.

....

Посмотри имплементацию такого меню в базовых классах WTL.
Там все сделано как ты хочешь

Андрей.
Re[2]: draw themed menu
От: cvscommit  
Дата: 20.10.03 10:51
Оценка:
Здравствуйте, c-smile, Вы писали:

А>>Сделал менюбар из тулбара, как написано в MSDN'овской статье Creating an

А>>Internet Explorer-style Menu Bar. Все хорошо работает, только внешний вид и
А>>кнопочек в тулбаре не такой, а у пунктов меню в виндоус ХП. В статье о
А>>внешнем виде ни слова. Ладно, ловим NM_CUSTOMDRAW и пытаемся нарисовать
А>>пункты меню самостоятельно.

CS>Посмотри имплементацию такого меню в базовых классах WTL.

CS>Там все сделано как ты хочешь

Спасибо за совет, посмотрел. Они там тоже делают FillRect и DrawText

Все же остается непонятным, за какой целью в статье Parts and States среди контролов указан MENU. Неужели они собирались сделать функции "темного" рисования для меню и забыли? Или все же как-то можно до них добраться?

Кондратьев
Re: draw themed menu
От: uav  
Дата: 11.12.03 16:50
Оценка:
Здравствуйте.

Было бы интересно узнать решение проблемы через OpenThemeData, если таковое имеется.
Интересно, как Вы собираетесь узнать handle окна для передачи в качестве параметра в OpenThemeData?
Ведь у меню его нет!
Re[2]: draw themed menu
От: cvscommit  
Дата: 11.12.03 17:01
Оценка:
Здравствуйте, uav, Вы писали:

uav>Было бы интересно узнать решение проблемы через OpenThemeData, если таковое имеется.

uav>Интересно, как Вы собираетесь узнать handle окна для передачи в качестве параметра в OpenThemeData?
uav>Ведь у меню его нет!

К сожаленю с темами ничего не получилось. В качестве HWND я бы передал HWND тулбара, на котором и собирался рисовать. Но раз ребята из микрософта в свем WTL сами обходятся без этих функций, то значит они и вправду для меню не работают.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.