Здравствуйте, Sergei I. Gorelkin, Вы писали:
SIG>Здравствуйте, lucifer_vrn, Вы писали:
_>>Здравствуйте! _>>Подскажите пожалуйста, как поместить кнопку или хотя бы просто нарисовать нечто в заголовке окна рядом с кнопками "закрыть", "свернуть", "развернуть"? _>>Тут множество топиков про это, равно как и в гугле, но тут есть одна проблема — они не работают по Windows Vista/ Windows Seven, т.е. под Aero(если его отключить то все работает). А меня интересует именно под висту, если под более раними осями работать не будет — не страшно.
SIG>Aero не позволяет рисовать в неклиенской области окна (при попытке это сделать Aero отключается), зато рамку можно расширить в клиентскую область. SIG>Поэтому: SIG>1) путем обработки WM_NCCALCSIZE системе внушается, что клиентская область окна занимает все окно. SIG>2) с помощью DwmExtendFrameIntoClientArea() восстанавливаем визуально исходный размер рамки. SIG>3) теперь остается сущая мелочь — самостоятельно реализовать всю функциональность неклиенской области, которая ушла лесом из-за п.1. SIG>4) и сущая мелочь номер два — доработать напильником рисование клиентской области, чтобы на месте рамки рисовалось только то, что нужно.
2 и 3 с теми или иными нюансами у меня было сделанно.
4 немогу начать пока остальное не сделаю.
вот за пункт 1 большое спасибо! Попытался реализовать сие дело:
вообще плохо понял как правильно реализовывать WM_NCCALCSIZE... в моей реализации главный косяк, что я еще случай с wParam == FALSE не обрабатываю, но он вроде и не приходит.
Так вот при этой реализции:
1. кнопки системного меню свернуть закрыть итд остались — что есть великолепно!
2. окно нормально ресайзиться
3. Но когда пытаюсь переместить окно(за клиентскую часть у меня реализация этого была) оно у меня начинает увеличивать размер. Видимо дело в том что я в WM_NCCALCSIZE чето не правильно считаю...
4. После перемещение/ресайза окна — кнопки закрыть/свернуть начинают работать только со второго клика, т.е. первый раз нажимаю чето происходит второй раз жму он выполянет.
Подскажите пожалуйста как правильно реализовать WM_NCCALCSIZE?