контролы на чистом WinAPI
От: Аноним  
Дата: 08.07.08 07:56
Оценка:
Занялся созданием контролов на чистом WinAPI на Codejock.com нашел примеры окон (уже реализация) решил повторить… сделал окно OVERLAPPED c возможностью resize… в тех примерах, что я нарыл использовалась технология skin-а т.е. графика накладывается на стандартное окно т.к. при Max/Min окна просматривается стандартное окно WinXP, но результат вполне приемлемый…
У меня же окно с 0 и возникли следующие вопросы.

1. 1. Самое интересное, что в тех примерах, как и в стандартных окнах Windows (WS_OVERLAPPED) при изменении размера окна за левый бордюр правый остается на месте а между ним и содержимым окна мелькает фон рабочего стола (если под ним больше ничего нет), т.е. складывается такое впечатление, что окна внутри подвешаны независимо… а затем подгоняются под размеры основного… При изменении размеров просматривается верхняя ограничивающая рамка окна в 1 пиксел… как это объясняется?
2. Как сделать закругленные углы? Т.к. устанавливать регион окна при изменении размеров – тормозит. Слоистое – еще хуже.
3. Возможно ли делать такие окна на базе POPUP/OVERLAPPED(без заголовка) или все же ловить WM_NCPAINT и т.д.? и рисовать заголовок и бордюр в зависимости от того какая ширина бордюра и высота заголовка установлены на данный момент для системы. Т.е. они по размеру (бордюр и заголовок) будут точно такими же как и стандартные?
4. Хотя SPY++ иногда опряделяет что кномки MIN/MAX окна могут быть расположены в области заголовка, а могут быть перенесены в клиентскую область (т.е. отрисованы самостоятельно).
5. Пока поступаю следующим образом в WM_NCCALCSIZE определяю новые размеры окна и делаю картинку на все окно (двойная буферизация) также устанавливаю новый регион окна т.к. у меня resize сделан вручную, при поступлении WM_PAINT – BitBlt, но есть особенность, у меня получается… в стандартных окнах например «блокнот» при быстром увелечении размеров за левый бордюр (тащим влево) наблюдается мерцание окна с правой стороны т.е. как будто окно стремиться уменшиться, затем становиться на свое место… у меня получается наооборот при увеличении окна за левый бордюр все OK, но когда начинаю уменьшать размеры то эффект что окно стремиться уменьшиться, затем становиться на свое место, в математике RESIZE – а ошибок нет это связано только с выводом графики.
6. Где можно найти подробную информацию по созданию нестандартных окон с возможностью изменения размеров, и правильной отрисовке бордюров и т.к. т.к. статические окна можно сделать любой формы,то при создании окон с возможностью изменения размеров возникают проблемы?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.