Странное поведение цвета фона элемента управления редактирования при использовании общих элементов управления WinXp - PullRequest
1 голос
/ 25 октября 2009

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

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

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

Спасибо, # 535.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2009

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

0 голосов
/ 26 октября 2009
  1. Когда вы присоединяете манифест версии 6, вызов InitcommonControlsEx становится ненужным.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...