Вниз
Скачать: CL | DM;

Прорисовка заголовка окна в различных стилях.   Найти похожие ветки 

← →
Юрий Зотов ©   (2004-01-06 12:00) [0]

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

В итоге "классический" заголовок рисуется нормально (то есть, неотличимо от системной прорисовки), но при включении тем в XP геометрия "съезжает", причем в зависимости от текущего стиля окна съезжает совершенно по-разному. Что для меня странно - я полагал, что GetSystemMetrics должна выдавать правильные данные при любой теме или без темы вообще.

Если подкорректировать прорисовку, то добиться нужного результата удается - но тогда, естественно, съезжает геометрия заголовка при прорисовке в классическом стиле. Значит, прорисовка должна быть условной и в связи с этим возник вопрос.

Как установить, что мы работаем под под XP - это не проблема, а вот как определить, что включена какая-то схема и определить правильную для нее геометрию элементов заголовка?

Или я вообще не в ту сторону подался? В общем, нужно добиться, чтобы прорисованный вручную заголовок при любых раскладах был неотличим от системного. Не сталкивался ли кто-то с такой же или похожей задачей?

Пытался покопаться в MSDN, но безуспешно (видимо, потому, что он у меня не шибко свежий).

Заранее спасибо.


← →
REA ©   (2004-01-06 12:04) [1]

Pls. детализируйте ваши изыскания в отношении вызовов GetSystemMetrics и "коррекции" ее показаний. Т.е. что куда съезжает.


← →
Игорь Шевченко ©   (2004-01-06 12:23) [2]

В XP GetSystemMetrics подменяется функцией ThemeGetSystemMetrics из UxTheme.DLL. Она же экспортирует функции IsAppThemed и GetWindowTheme. Может, чем поможет


← →
REA ©   (2004-01-06 12:36) [3]

По наводке ИШ в MSDN за апрель 2003:
User Interface Design And Development\Windows Shell\Shell Reference\Visual Styles Reference



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.014 c
3-49404
NickNaz
2003-12-19 12:34
2004.01.16
DBGrid


3-49470
ВК
2003-12-21 00:51
2004.01.16
Как получить индекс самой последней записи в таблице при использо


1-49480
anbezr
2004-01-06 13:20
2004.01.16
непонятный глюк редактора.


3-49414
tchn
2003-12-16 21:47
2004.01.16
следить за процессом выполнения хранимой процедуры на сервере


3-49440
S.A.S.
2003-12-17 14:21
2004.01.16
Разрешение на открыти базы в Win2000




   Наверх