Как изменить размер title bar?
От: Atg Беларусь  
Дата: 21.07.04 05:30
Оценка:
Возникла следующая проблема. В XP Нужно изменить title bar size. Единственный вариант, который я пока знаю — это изменить клиентскую область (WM_NCCALCSIZE) + послать WM_THEMECHANGED. Но проблема в том, что title bar buttons остаются старого размера (вылезают за границы title bar) + при создании других окон из этого — скидывается обратно.
Хотелось бы иметь функциональность, как в винде при изменении Active Caption Size в настройках Appearence/Advanced/

Возможно ли программно изменить тему XP?
Re: Как изменить размер title bar?
От: CEMb  
Дата: 21.07.04 06:15
Оценка:
Здравствуйте, Atg, Вы писали:

Atg>Возможно ли программно изменить тему XP?


Программно изменить можно, но это тебя не спасёт.
Как тока ты сменишь тему, система бросится оповещать об этом все окна.

Лучше сделать так:
При NCPAINT, звать DefWindowProc, чтоб она сделала "своё грязное дело".
Потом. Взять у него DC и сделать к нему Compatible,
в него из родного сделать StretchBlt() хвоста титлбара, то есть того места, где лежат кнопки.
Кнопки в CompatibleDC растянутся до нужного тебе размера, тебе остаётся только нарисовать их назад.

В MSDN'е есть похожий пример для MFC, там тока кнопки ненужные не рисуются, то есть, если у тебя есть "свернуть" и "закрыть", то загрееная "развернуть" просто пропадает, на её место сдвигается "свернуть"
Re[2]: Как изменить размер title bar?
От: Аноним  
Дата: 21.07.04 07:06
Оценка:
Здравствуйте, CEMb, Вы писали:

CEM>Здравствуйте, Atg, Вы писали:


Atg>>Возможно ли программно изменить тему XP?


CEM>Программно изменить можно, но это тебя не спасёт.

CEM>Как тока ты сменишь тему, система бросится оповещать об этом все окна.

CEM>Лучше сделать так:

CEM>При NCPAINT, звать DefWindowProc, чтоб она сделала "своё грязное дело".
CEM>Потом. Взять у него DC и сделать к нему Compatible,
CEM>в него из родного сделать StretchBlt() хвоста титлбара, то есть того места, где лежат кнопки.
CEM>Кнопки в CompatibleDC растянутся до нужного тебе размера, тебе остаётся только нарисовать их назад.

CEM>В MSDN'е есть похожий пример для MFC, там тока кнопки ненужные не рисуются, то есть, если у тебя есть "свернуть" и "закрыть", то загрееная "развернуть" просто пропадает, на её место сдвигается "свернуть"


Нашел в MSDN статью KB99046, попробую.
Можно линк на MFC сэмпл (или название хотя бы)?

Еще вопрос как все — таки можно программно тему перерубить?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.