Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.041 c
3-1178012895
Sapos
2007-05-01 13:48
2007.08.12
Формат времени


15-1184662508
boriskb
2007-07-17 12:55
2007.08.12
А ты годишься в учителя новейшей истории?


2-1184307465
vico
2007-07-13 10:17
2007.08.12
Как получить адрес объекта из метода этого же объекта?


3-1177688508
alpha5
2007-04-27 19:41
2007.08.12
Как русифицировать dxDBGrid?


3-1177243506
ZevSS
2007-04-22 16:05
2007.08.12
Обратная связь с MS SQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский