Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.12;
Скачать: CL | DM;

Вниз

Различный цвет фона контрола и его владельца   Найти похожие ветки 

 
jTommy   (2007-02-23 14:00) [0]

Добрый день.
Подскажите, почему фона статических контролов и checkbox"ов отличается от фона их владельца (владелец контролов - Tab Control)? Наверное я со стилем окон чего-нить напутал?

Это проявляется только при включенных темах XP.

Скриншот интерфейса:
<img>http://jtommy.by.ru/images/UIBad.png</img>

На всякий случай код создания контролов:

tcMainTabs:=CreateWindowEx(0, WC_TABCONTROL, "", WS_VISIBLE or WS_CHILD or TCS_TABS or TCS_HOTTRACK, 8, 73, MainWndW-22, MainWndH-108, MainWnd, id_tcMainTabs, hInstance, nil);

lbLanguages:=CreateWindowEx(0, "STATIC", "", WS_VISIBLE or WS_CHILD, 180, 44, 155, 13, tcMainTabs, id_lbLanguages, hInstance, nil);

cbSaveOptions:=CreateWindowEx(0, "BUTTON", "", WS_VISIBLE or BS_AUTOCHECKBOX or WS_CHILD or WS_TABSTOP, 16, 66, 200, 17, tcMainTabs, id_cbSaveOptions, hInstance, nil);


 
jTommy   (2007-02-23 14:04) [1]

Правильная ссылка на скриншот: http://jtommy.by.ru/images/UIBad.png


 
Rouse_ ©   (2007-02-23 15:03) [2]

Посмотри как это у меня решалось: http://rouse.drkb.ru/winapi.php#propsheet


 
jTommy   (2007-02-23 18:27) [3]


> Посмотри как это у меня решалось: http://rouse.drkb.ru/winapi.
> php#propsheet

Спасиб, помогло, но не на 100%.

Добавил обработку WM_CTLCOLORSTATIC - лейблы стали нормальные, но при отключенных темах GroupBox"ы отображались немного некорректно: http://jtommy.by.ru/images/UIBad1.png
Добавил проверку:

...
WM_CTLCOLORSTATIC: begin
 if UseThemes then begin
   SetBkMode(wParam, TRANSPARENT);
   Result:=TransparentBrush;
 end else
   // Вызов старой оконной процедуры Tab Control
   Result:=CallWindowProc(MainTabsOldProc, hWind, Msg, wParam, lParam);
end;
...


А теперь главное: фон у CheckBox"ов и одного Edit"а стал черного цвета.
http://jtommy.by.ru/images/UIBad2.png

Причем, если у Edit"а убрать свойство ES_READONLY, то он отображается корректно. Наверное так и сделаю, уберу это свойство, а ввод буду контролировать "вручную". А вот что делать с CheckBox"ами, не знаю...


 
Rouse_ ©   (2007-02-26 09:56) [4]

WM_CTLCOLORSTATIC:
begin
 if LParam = lbLanguages then
 begin
   if UseThemes then
   begin
     SetBkMode(wParam, TRANSPARENT);
     Result:=TransparentBrush;
   end
   else
     // Вызов старой оконной процедуры Tab Control
     Result:=CallWindowProc(MainTabsOldProc, hWind, Msg, wParam, lParam);
 end
 else
   Result:=CallWindowProc(MainTabsOldProc, hWind, Msg, wParam, lParam);
end;


 
Rouse_ ©   (2007-02-26 09:59) [5]

т.е. суть - вызов SetBkMode должен производиться только при включенных темах только у STATIC, во всех остальных случаях производиться вызов CallWindowProc



Страницы: 1 вся ветка

Текущий архив: 2007.08.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
2-1184152074
Vasyl
2007-07-11 15:07
2007.08.12
Поиск


2-1184248152
cava
2007-07-12 17:49
2007.08.12
линии


6-1167768922
Moonglow
2007-01-02 23:15
2007.08.12
CrtSock


2-1184074536
Xion
2007-07-10 17:35
2007.08.12
Проблема с потоком.


15-1184257123
ZERO
2007-07-12 20:18
2007.08.12
Заголовки DirectX