Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Вниз

Как правильно обрабатывать сообщение 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
1-24092
V.Turecky
2002-07-26 15:11
2002.08.08
Работа с ТCheckListBox...


3-23873
Борис
2002-07-17 09:58
2002.08.08
Как оптимизировать вычисление одного столбца от друго(код внутри)


4-24282
IIS
2002-05-31 11:35
2002.08.08
Как програмно раздавать права на реестр?


8-24134
P.
2002-04-02 18:16
2002.08.08
3D


3-23940
Dimedrol
2002-07-17 18:55
2002.08.08
Creating TRIGGER (FireBird, QuickDesk)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский