Главная страница
    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.038 c
2-1184347870
nord489
2007-07-13 21:31
2007.08.12
Работа с файлами


15-1184306662
Ega23
2007-07-13 10:04
2007.08.12
sql.ru только у меня не открывается?


6-1166522728
djon silver
2006-12-19 13:05
2007.08.12
HTTP Server


15-1184382310
Riply
2007-07-14 07:05
2007.08.12
Велик могучим С++ языка ! :)


15-1184365759
lookin
2007-07-14 02:29
2007.08.12
Чего не спите?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский