![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно обрабатывать сообщение WM_PAINT? [Win95/98]
Baz © (2002-05-31 10:50:00)Ситуэйшн: я нарисовал что-то мышкой в окне (в обработчике на WM_MOUSEMOVE). Хочу, чтоб при изменении размероов окна мои художества не стирались. Для этого в обработчике WM_PAINT пишу
ValidateRect(hWnd,NULL);
в детской надежде, что вся клиентская область будет объявлена "правильной" и не будет перерисовываться. Но все стирается. То же и с частью клиентской области.
Расскажите, добрые люди, плз, попонятнее про сообщение WM_PAINT и функции ValidateRect, InvalidateRect, RedrawWindow, UpdateWindow.
Ну, в крайнем случае, просто подскажите, что я делаю не так?
Заранее спасибо, Baz
Baz (2002-06-03 12:31:00) [1]При изменении размера обновление и так не происходит
Не знаю... Убрал все из обработчика WM_SIZE, все равно стирается. Кстати, заметил, что изображение стирается при переходе мышки с одной системной кнопки на другую (напр., со "СВЕРНУТЬ" на "ЗАКРЫТЬ"). Заметьте, не при нажатии. Это глюк?
Значит, все-таки заново перерисовывать? Жаль...
А вопрос в догонку. Как функциями API установить нижние границы размера окна? WM_GETMINMAXINFO посоветовали, а я что-то не могу от него ничего добиться.
ggrisha (2002-06-03 10:49:00) [2]При изменении размера обновление и так не происходит. Наверно ты его сам стираешь в WM_SIZE. Изображение сотрется в случае если его перекроет другое окно или край экрана. В этой ситуации поможет только повторная перерисовка изображения, но не отключение стирания.
Baz (2002-06-03 06:45:00) [3]Ну вот, выходные кончились. Может теперь кто-нибудь поможет?
Baz (2002-06-01 08:03:00) [4]Кажется, могу ткнуть пальцем в то, чего не понимаю. Как понять " Функция BeginPaint удаляет из области обновления всю рабочую область окна"? Ведь область обновления (Update Region) - это то, что БУДЕТ перерисовываться? А удалить из области обновления (validate) - это значит сказать системе "Эту часть перерисовывать не надо!" Кто-нибудь, подскажите, что же тогда потом перерисовывается?
Baz (2002-06-01 06:13:00) [5]Спасибо, то чтот нужно. Но, я,примерно, так все и представлял :(. И все равно не понимаю, что же я делаю не так. Или как сделать правильно.
Alex G u e s t (2002-05-31 11:44:00) [6]Вот тут немного есть.
"Начало работы с графикой в Delphi. Системное сообщение WM_PAINT."
http://www.delphikingdom.com/mastering/gdi/index.htm