| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Рисуем элементы меню |
| Автор: LerikCo 23.4.2014, 18:49 | ||||||
| Доброго времени суток! Что требуется: На диалоговом окне (C++, MFC) CMenuTestDlg есть главное и контекстные меню, созданные в редакторе ресурсов. Необходимо добавить в него иконки и разрисовать элементы в стиле Office2003, т.е. под иконкой фон закрашивать синим, выделенный элемент подсвечивать желто-розовым, обводить рамкой. Многим (разным) пунктам меню должна соответствовать одна и та же иконка. Иконки 32-bit хранятся в ресурсах в виде икон (не тулбар!). Что сделал: В карту обработчика сообщений диалога добавил
Ну, естественно, в MenuTestDlg.h диалога добавил
Что получилось: Функции OnMeasureItem() и OnDrawItem() вызываются, всё нормально. Иконку в OnDrawItem() рисую, проблем нет. Но не могу рисовать по элементу меню в том месте, где выводится текст. Во-первых, lpdis->rcItem определяет прямоугольник под иконой. Получить рект всего элемента не знаю как. Во-вторых, даже задавая рект для всего элемента вручную, вижу только фрагмент отрисовки своего прямоугольника, всё остальное накрывает текст элемента. В третьих, не понимаю, как различать выделенный и невыделенный элемент меню. Помогите для начала банально залить весь прямоугольник невыделенного элемента меню красным. ЗЫ: Что было прочитано: http://www.sources.ru/cpp/faqs/74.htm http://forum.sources.ru/index.php?showtopic=64795 http://forum.sources.ru/index.php?showtopic=26844&hl= http://forum.sources.ru/index.php?showtopic=31907&hl= http://www.codeproject.com/Articles/16529/Simple-Menus-That-Display-Icons-Minimalistic-Appro http://www.codeproject.com/Articles/2354/Owner-Drawn-Menu-with-Icons-Titles-and-Shading http://www.realcoding.net/articles/glava-12-v-glubine-menyu.html ЗЗЫ: Не откажусь от уже готового класса, если таковой имеется. С уважением и надеждой! |
| Автор: LerikCo 23.4.2014, 19:53 |
| vol4ek, не очень понял, зачем мне "ленты", если я говорил про меню в стиле 2003? ЗЫ: Проект изначально написан на VC6. Преобразовывать к другим версиям нежелательно. |
| Автор: vol4ek 23.4.2014, 20:35 | ||
дело в том что меню в офисе - не меню, а панель быстрого доступа созданная конструктором на ленте и класса CMenu там нет в помине. |