![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Гость_Дмитрий |
|
|||
Unregistered |
Как при программировании на WinApi перехватить событие изменения размеров окна, но чтобы обработав его, окно таинственным образом не стирало себя. Это как на подобие функции InvalidateRect(..., ..., TRUE) - последний параметр указывает, нужно ли перед работай функции стирать (закрашивать цветом фона) окно или нет.
Так вот, когда изменяешь размер, окно получает сообщение - сначало стереть себя, и лишь потом обновить. А мне нужно, чтобы окно не стералось, а то происходит нелепое моргание. Помогите! Спасибо. Дмитрий [email protected] |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Во-первых, окно сначала стирается а затем перерисовывается. За стирание отвечает сообщение WM_ERASEBKGND, за отрисовку - WM_PAINT. Всё что нужно сделать, чтобы окно не мерцало при перерисовке (функциями RedrawWindow, UpdateWindow, Invalidate и т.п.) - это написать свой пустой обработчик сообщения WM_ERASEBKGND, в котором не выполнять никаких действий; в обработчике WM_PAINT не рисовать напрямую в графический контекст ассоциированный с окном, а создать memory-based контекст граф. вывода, отрисовать всё туда (предварительно очистив его с пом. FillSolidRect), и "перекинуть" всё содержимое контекста памяти в контекст окна функцией BitBlt. Пример на MFC есть в нашем FAQ по С++.
-------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |