Рисование линии за пределами 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() в классе отображения.

1 ответ

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

Другие вопросы по тегам