Самопрорисовывающееся окно
От: _coder  
Дата: 28.11.01 08:44
Оценка:
Объясните толково (лучше на примере) как сделать самопрорисовывающееся окно (рамка, заголовок, кнопки системного меню
— по типу как в WinAmp'е)
Re: Самопрорисовывающееся окно
От: OlegO Россия http://www.mediachase.ru
Дата: 28.11.01 08:56
Оценка:
Здравствуйте _coder, Вы писали:

C>Объясните толково (лучше на примере) как сделать самопрорисовывающееся окно (рамка, заголовок, кнопки системного меню

C> — по типу как в WinAmp'е)

Перекрывать сообщения:
-----------------------------
В первую очередь:
WM_PAINT
WM_ERASEBKGND
WM_NCPAINT
-----------------------------
Дополнително:
WM_NCACTIVATE
WM_NCCALCSIZE
(Желательно перекрыть все методы для работы с не клиентской областью WM_NC
и в них все делать самому, не давая системе выполнять действия по умолчанию —
что приводит к появлению нежелательных артефактов)

+

ф-я SetWindowRgn(...)

Вроде больше ничего не надо.

PS: Пример артефакта:
Когда будешь тестировать на W2K проверь следующие:
1. Открой калькулятор, Окно с перерисованным заголвком (например WinAmp).
2. Схвати калькулятор за заголовок и проведи сверху несколько раз через границу
WinAmp'a(Окно должно таскаться целиком, а не рамка)
3. Нажми в Таск Баре, правой кнопкой на кнопке WinAmp чтоб показалось системное меню.
4. Опля появилась стандартный заголовок виндовского окна
С уважением, OlegO.
Re: Самопрорисовывающееся окно
От: _coder  
Дата: 28.11.01 09:09
Оценка:
Great thanx, OlegO — отреагировал быстро. Но есть одно "НО" — все это я теоретически (почти все) уже знаю.
Не мог бы ты дать линк на пример, что ли.
Re[2]: Самопрорисовывающееся окно
От: Alexander Shargin Россия RSDN.ru
Дата: 28.11.01 09:23
Оценка:
Здравствуйте _coder, Вы писали:

C>Great thanx, OlegO — отреагировал быстро. Но есть одно "НО" — все это я теоретически (почти все) уже знаю.

C>Не мог бы ты дать линк на пример, что ли.

Посмотри здесь:
http://www.microsoft.com/msj/defaultframe.asp?page=/msj/0197/c++/c++0197.htm&nav=/msj/0197/newnav.htm
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.