Странное поведение цвета фона элемента управления редактирования при использовании общих элементов управления WinXp

StackOverflow https://stackoverflow.com/questions/1621077

Вопрос

У меня странная проблема (по крайней мере, я нахожу это странным =)). Я пишу свою собственную библиотеку GUI, которая является оболочкой для Windows API (и да, я знаю о WTL и фреймворках, таких как MFC =)). На текущем этапе я инкапсулировал общие элементы управления таким образом: например, класс Edit состоит из простого окна и стандартного окна редактирования над ним (MainWindow -> GhostWindow -> EditBox). Вот как я могу, например, изменить цвет фона редактирования внутри самого класса редактирования:

myedit->SetBkColor ( RGB ( 0, 0, 0 ) );

И все работало нормально, пока я не вызвал InitCommonControlsEx и не прикрепил файл манифеста к моей программе. После этого мои правки становятся способными изменять цвета только тогда, когда они имеют фокус. Если честно, у меня нет всесторонних мыслей о том, почему так себя ведут и что я делаю неправильно, поэтому я буду признателен за любую помощь.

Спасибо, # 535.

Это было полезно?

Решение 2

Ну, все намного проще, чем я думал. Я был просто слишком невнимателен = (Когда кто-то не использует стилизацию, можно использовать :: SetBkColor (...), чтобы изменить цвет фона, и вернуть кисть из WM_CTLCOLOR *, чтобы изменить цвет границы. После включения стилизации все становится иначе . Now :: SetBkColor (...) соответствуют цвету focus , а возвращающаяся кисть меняет цвет фона. Позор мне = (

Другие советы

<Ол>
  • Когда вы присоединяете манифест версии 6, вызов InitcommonControlsEx становится ненужным.

  • В любом случае. с загруженными общими элементами управления версии 6 тема XP используется даже для стандартных элементов управления Windows. Цвета фона для элементов управления окрашены с использованием цвета xp-theme, поэтому сообщения WM_CTLCOLOR * используются меньше.

  • В настоящее время вы переопределяете класс различных элементов управления, используя сообщения WM_CTLCOLOR *?

  • Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top