Может ли кто-нибудь сказать с каким цветом фона прорисовывается главное меню приложения в Windows? Изменение настроек цвета фона меню в Display Properties на цвет фона главного меню влияния не оказывает.
Здравствуйте Кодт.
Вы всё верно описываете, так оно и есть, например, на ОС Win NT 4. Эта проблема вылезла только на Win XP. В ней изменение цвета фона меню на главное меню приложения влияния не оказывает, а оказывает влияние только на выпадающие меню следующих уровней.
Собственно у меня есть меню у которого я обрабатываю сообщение WM_DRAWITEM. Для цвета фона я использую кисть получаемую как GetSysColorBrush(COLOR_MENU). В результате при стандартной голубой палитре WinXP главное меню своим фоном выделяется от соседних элементов.
К>На закладке Appearance, Item=Menu, два цвета: фона и текста. Нормально работает...
К>(только что проверил).
К>Может, программа похерила обработку WM_SYSCOLORCHANGE? (обновление по изменении системных цветов).
К>Остальные-то программы работают или нет?
К>Еще может быть, что какая-либо программа-твикер постоянно подставляет свой вариант цвета COLOR_MENU?
К>Наконец, довольно тривиальная, но неприятная фича диалога Display Properties.
К>У него некоторые цвета взаимосвязанны (установив цвет одного элемента, тем самым устанавливаешь и другой элемент). Что именно — сходу не помню...
К>Для проверки — попробуйте изменить только цвет фона меню, тут же применить и посмотреть.
Здравствуйте Luchkin, Вы писали:
L>Здравствуйте Кодт.
L>Вы всё верно описываете, так оно и есть, например, на ОС Win NT 4. Эта проблема вылезла только на Win XP. В ней изменение цвета фона меню на главное меню приложения влияния не оказывает, а оказывает влияние только на выпадающие меню следующих уровней.
L>Собственно у меня есть меню у которого я обрабатываю сообщение WM_DRAWITEM. Для цвета фона я использую кисть получаемую как GetSysColorBrush(COLOR_MENU). В результате при стандартной голубой палитре WinXP главное меню своим фоном выделяется от соседних элементов.
Не получилось так — прочтем руководство
MSDN 2001, Platform SDK ... GetSysColor()
COLOR_MENUHILIGHT
Windows XP: The color used to highlight menu items when the menu appears as a
flat menu (see SystemParametersInfo). The highlighted menu item is outlined with COLOR_HIGHLIGHT.
COLOR_MENUBAR
Windows XP: The background color for the menu bar when menus appear as flat menus (see SystemParametersInfo). However, COLOR_MENU continues to specify the background color of the
menu popup.
Чтобы обойти платформенную зависимость, может быть, можно воспользоваться фоновым цветом окна (то есть — менюшки, ведь ее хэндл передается в обработчик WM_DRAWITEM).