Возникла следующая проблема. В XP Нужно изменить title bar size. Единственный вариант, который я пока знаю — это изменить клиентскую область (WM_NCCALCSIZE) + послать WM_THEMECHANGED. Но проблема в том, что title bar buttons остаются старого размера (вылезают за границы title bar) + при создании других окон из этого — скидывается обратно.
Хотелось бы иметь функциональность, как в винде при изменении Active Caption Size в настройках Appearence/Advanced/
Здравствуйте, 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 сэмпл (или название хотя бы)?
Еще вопрос как все — таки можно программно тему перерубить?