WM_PAINT
хотел спросить
Вот предположим у нас есть функция
void DrawRectangle(HWND hWnd)
{
HDC dc;
dc = GetWindowDC(hWnd);
Rectangle(dc,50,50,150,150);
}
Эта функция работает и выводит прямоугольник(делается не из WM_PAINT)
Но при свертывании окна и потом его восстановлении прямоугольник пропадает,
если его другим окном перекроешь а потом уберешь окно то он тоже пропадает.
Нельзя ли как - нибудь сделать так чтобы это не происходило?
Или все - таки надо все рисовать в WM_PAINT а затем когдаего надо изобразить вызывать InvalidateRect(...,...)?
Заранее спасибо тем кто ответит...
Поэтому просто вставте в обработку WM_PAINT вашу функцию рисования и все
чтото типа
hDC = BeginPaint();
DrawBox(hDC);
EndPaint();
PS Могу жутко глюкать с параметрами и именами функций (давно я на Си не писал...) но смысл такой )
И всё-таки лучше рисовать при WM_PAINT или отлавливать сообщения при свёртывании/развёртывании окна. А при перекрытии даже и не знаю, что делать.
И всё-таки лучше рисовать при WM_PAINT или отлавливать сообщения при свёртывании/развёртывании окна. А при перекрытии даже и не знаю, что делать.
Если графики много и над твои окном перемещают другое то получиться не очень хорошо. Для решения этой проблемы используют дополнительные контексты устройств :
см. API функции CreateCompatibleDC, BitBlt, GetDC ... BitBlt сначала из DC окна в созданный ComapibleDC, а затем при событии VM_PAINT BitBlt назад - при этом вся графика в окне восстановиться ...