Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.08;
Скачать: CL | DM;

Вниз

Как правильно обрабатывать сообщение WM_PAINT?   Найти похожие ветки 

 
Baz ©   (2002-05-31 10:50) [0]

Ситуэйшн: я нарисовал что-то мышкой в окне (в обработчике на WM_MOUSEMOVE). Хочу, чтоб при изменении размероов окна мои художества не стирались. Для этого в обработчике WM_PAINT пишу
ValidateRect(hWnd,NULL);
в детской надежде, что вся клиентская область будет объявлена "правильной" и не будет перерисовываться. Но все стирается. То же и с частью клиентской области.
Расскажите, добрые люди, плз, попонятнее про сообщение WM_PAINT и функции ValidateRect, InvalidateRect, RedrawWindow, UpdateWindow.
Ну, в крайнем случае, просто подскажите, что я делаю не так?

Заранее спасибо, Baz


 
Alex G u e s t ©   (2002-05-31 11:44) [1]

Вот тут немного есть.
"Начало работы с графикой в Delphi. Системное сообщение WM_PAINT."
http://www.delphikingdom.com/mastering/gdi/index.htm


 
Baz ©   (2002-06-01 06:13) [2]

Спасибо, то чтот нужно. Но, я,примерно, так все и представлял :(. И все равно не понимаю, что же я делаю не так. Или как сделать правильно.


 
Baz ©   (2002-06-01 08:03) [3]

Кажется, могу ткнуть пальцем в то, чего не понимаю. Как понять " Функция BeginPaint удаляет из области обновления всю рабочую область окна"? Ведь область обновления (Update Region) - это то, что БУДЕТ перерисовываться? А удалить из области обновления (validate) - это значит сказать системе "Эту часть перерисовывать не надо!" Кто-нибудь, подскажите, что же тогда потом перерисовывается?


 
Baz ©   (2002-06-03 06:45) [4]

Ну вот, выходные кончились. Может теперь кто-нибудь поможет?


 
ggrisha ©   (2002-06-03 10:49) [5]

При изменении размера обновление и так не происходит. Наверно ты его сам стираешь в WM_SIZE. Изображение сотрется в случае если его перекроет другое окно или край экрана. В этой ситуации поможет только повторная перерисовка изображения, но не отключение стирания.


 
Baz ©   (2002-06-03 12:31) [6]

При изменении размера обновление и так не происходит
Не знаю... Убрал все из обработчика WM_SIZE, все равно стирается. Кстати, заметил, что изображение стирается при переходе мышки с одной системной кнопки на другую (напр., со "СВЕРНУТЬ" на "ЗАКРЫТЬ"). Заметьте, не при нажатии. Это глюк?
Значит, все-таки заново перерисовывать? Жаль...
А вопрос в догонку. Как функциями API установить нижние границы размера окна? WM_GETMINMAXINFO посоветовали, а я что-то не могу от него ничего добиться.



Страницы: 1 вся ветка

Текущий архив: 2002.08.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
1-23982
DeepProg
2002-07-20 19:37
2002.08.08
Два в одном


14-24203
SuperIgor
2002-06-22 21:07
2002.08.08
Чат для модемной связи.


4-24271
DeMoN-777
2002-06-02 03:31
2002.08.08
Элементы листбокса чужой программы.


1-23978
ZenoN
2002-07-27 10:40
2002.08.08
Какой инсталятор юзать для проги?


4-24264
DeMoN-777
2002-06-01 15:27
2002.08.08
Как вызвать стандартное окно