Рисование линии за пределами WM_PAINT

Обычно, чтобы нарисовать линию, мы рисуем ее в WM_PAINT

LRESULT CALLBACK Display::DisplayWindowProc(HWND hWnd,UINT msg,WPARAM wParamm,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;

switch(msg)
{
case WM_PAINT:
hdc = BeginPaint(hWnd,&ps);
MoveToEx(hdc,0,0,0);
LineTo(hdc,100,100);
EndPaint(hWnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc( hWnd, msg, wParamm, lParam);
}

Но я хочу нарисовать линию, когда захочу, простой пример:

int WINAPI WinMain
(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR cmdLine,
int showCmd
)
{
//Do Other Things
Display dislpay;
display.DrawLine();
//Do Other Things
}

Моя программа является объектно-ориентированной, и я отображаю вещи в классе Display, и мне было интересно, могу ли я нарисовать линию в функции, подобной DrawLine () в классе отображения.

2

Решение

Вы можете создать DC вне экрана, выбрать растровое изображение подходящего размера и использовать его для рисования в любое время. Затем на WM_PAINT вы моргаете из-за экрана DC в окна DC.

2

Другие решения


По вопросам рекламы [email protected]