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

Вниз

XP темы, PageControl и TEdit   Найти похожие ветки 

 
v   (2008-07-17 16:57) [0]

Пытаясь использовать темы в программе сделал заплатку для PageControl - сделать TabSheet"ы прозрачными - SetWindowLong(tab.handle,GWL_EXSTYLE,WS_EX_TRANSPARENT)

Однако обнаружил, что при начальном показе формы и при ресайзе PageControl"а у эдита пропадает окантовка (а также у TListBox, TMemo, а вот комбо-бокс чегой-то держится нормально) и появляется лишь при ручной смене страниц или наезде мышкой.

Помогает лишь ручной посыл сообщения WM_MOUSEMOVE уже когда форма видна, т.е. в код загрузки уже не вставишь...

Кто сталкивался? Какие есть идеи?


 
Игорь Шевченко ©   (2008-07-17 17:08) [1]


> Какие есть идеи?


сказать Invalidate


 
v   (2008-07-17 17:16) [2]

Кхе... С этого я начинал - ваще никакой реакции. Пока помогло только одно - когда форма уже на экране сделать по клику Edit1.Perform(WM_MOUSEMOVE,0,0). Можно конечно поставить таймер и делать автоматом, но это не наш путь ;-) Главное - непонятно почему, и как к этому "непонятно" подступиться...


 
tesseract ©   (2008-07-17 17:20) [3]

Такая же фигня, когда ставишь всякие "украшательства" на старые системы, манифест, кстати запихивал ?


 
v   (2008-07-17 17:29) [4]

манифест - обзятельно. и свою либу сделал. и свои контролы переделал (чтоб рисовались через ThemeAPI). все автоматизировано, все зашибись, проекты как новогодняя елка... и вот совершенно случайно обнаруживаю такую фигню...


 
v   (2008-07-17 17:41) [5]

смотрится так, что "прозрачный" TTabSheet (зарисованный градиентом из темы) затирает рамку эдита, т.е. клиентскую часть вин-контрола. ладно бы это было всегда, но почему тогда заливка не трогает комбо-бокс? у него ж тоже стандартная виндовая рамка...


 
tesseract ©   (2008-07-17 17:55) [6]


> ладно бы это было всегда, но почему тогда заливка не трогает
> комбо-бокс? у него ж тоже стандартная виндовая рамка...


Комбобокс отрисовываеться через VCL, насколько я помню, а TEdit вроде через стандартно через обработчик TWinControl.


 
v   (2008-07-17 18:11) [7]

ага, похоже, спасибо за наводку. Похоже прийдется перебрать TEdit и компанию на предмет отрисовки, может что получится... Ток все равно непонятно - какого лешего отрисовка фона таб-шита залазит на законную территорию контрола. И вообще, при каких условиях "бордюрная" часть вин-контрола может использована парентом?


 
Игорь Шевченко ©   (2008-07-17 20:41) [8]


> Кхе... С этого я начинал - ваще никакой реакции.


Такая еще функция помогает

     SetWindowPos (Handle, 0, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or
       SWP_NOZORDER or SWP_NOACTIVATE or SWP_DRAWFRAME);


 
tesseract ©   (2008-07-17 22:20) [9]


> Ток все равно непонятно - какого лешего отрисовка фона таб-
> шита залазит на законную территорию контрола


По буферу вывода.


 
Игорь Шевченко ©   (2008-07-17 23:38) [10]


>  И вообще, при каких условиях "бордюрная" часть вин-контрола
> может использована парентом?


при условии отсутствия WS_CLIPCHILDREN например


 
v   (2008-07-18 11:43) [11]

Хо-хо! Помогло исключение из стиля таб-шита WS_CLIPCHILDREN:

SetWindowLong(TabSheet.handle,GWL_STYLE,GetWindowLong(TabSheet.Handle,GWL_STYLE)  and not WS_CLIPCHILDREN);

Вставил в код инициализации формы, работает отлично. Игорь, спасибо! :-)))



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

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

Наверх





Память: 0.47 MB
Время: 0.005 c
9-1182099522
nuflin
2007-06-17 20:58
2009.09.06
как запустить исходник quake2


15-1246600795
Olleg
2009-07-03 09:59
2009.09.06
Создание картов маршрутов.


1-1213532081
Student
2008-06-15 16:14
2009.09.06
Свободная память + TStringGrid


15-1246825805
Юрий
2009-07-06 00:30
2009.09.06
С днем рождения ! 6 июля 2009 понедельник


2-1246776963
Fr
2009-07-05 10:56
2009.09.06
Колонки в TListView





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