Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

WM_PAINT

Аноним
Доброго времени дня всем!
хотел спросить
Вот предположим у нас есть функция
void DrawRectangle(HWND hWnd)
{
HDC dc;
dc = GetWindowDC(hWnd);
Rectangle(dc,50,50,150,150);
}
Эта функция работает и выводит прямоугольник(делается не из WM_PAINT)
Но при свертывании окна и потом его восстановлении прямоугольник пропадает,
если его другим окном перекроешь а потом уберешь окно то он тоже пропадает.
Нельзя ли как - нибудь сделать так чтобы это не происходило?
Или все - таки надо все рисовать в WM_PAINT а затем когдаего надо изобразить вызывать InvalidateRect(...,...)?
Заранее спасибо тем кто ответит...
475
03 июля 2001 года
Winnie
90 / / 20.03.2000
Виндовс не знает о существовании вашей функции рисования прямоугольника - поэтому при перевкрытии окна она естестывенно не может восстановить содержимое (при перетаскивании окна Винды для быстродействия копируют битовый образ окна - но это толь ко при перетаскивании!!!)
Поэтому просто вставте в обработку WM_PAINT вашу функцию рисования и все
чтото типа
hDC = BeginPaint();
DrawBox(hDC);
EndPaint();

PS Могу жутко глюкать с параметрами и именами функций (давно я на Си не писал...) но смысл такой )
1.6K
18 июля 2001 года
Eugeniy
3 / / 20.08.2000
И всё-таки лучше рисовать при WM_PAINT или отлавливать сообщения при свёртывании/развёртывании окна. А при перекрытии даже и не знаю, что делать.
1.6K
18 июля 2001 года
Eugeniy
3 / / 20.08.2000
И всё-таки лучше рисовать при WM_PAINT или отлавливать сообщения при свёртывании/развёртывании окна. А при перекрытии даже и не знаю, что делать.
634
03 августа 2001 года
Warg Silencer
5 / / 20.01.2000
Каждый раз перерисовывать графику в окне - это не лучший выход ...
Если графики много и над твои окном перемещают другое то получиться не очень хорошо. Для решения этой проблемы используют дополнительные контексты устройств :
см. API функции CreateCompatibleDC, BitBlt, GetDC ... BitBlt сначала из DC окна в созданный ComapibleDC, а затем при событии VM_PAINT BitBlt назад - при этом вся графика в окне восстановиться ...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог