0

我正在EDITfor循环创建几个元素。当我将窗口移到屏幕外然后又移回屏幕内时,EDIT控件会消失,事件中会出现一条线WM_PAINT

“创建”事件:

case WM_CREATE:
    for( int i =0; i < 4; i++ ){
        text = CreateWindow("EDIT","text",WS_VISIBLE | WS_CHILD , 0,i*40+100,100,10, hwnd , NULL, NULL, NULL);
    }

    // Other elements
    break;

“绘画”事件:

case WM_PAINT:
    {
        hdc = GetDC(hwnd);
        SetRect(&secondbackground, 0, 70, 800, 500);
        FillRect(hdc, &secondbackground, CreateSolidBrush(RGB(0,200,200)) );
        ReleaseDC(hwnd, hdc);

        hdc = GetDC(hwnd);
        SetRect(&secondbackground, 0, 0, 800, 20);
        FillRect(hdc, &secondbackground, CreateSolidBrush(RGB(0,100,200)) );
        ReleaseDC(hwnd, hdc);

        hdc = BeginPaint( hwnd, &ps );
        MoveToEx(hdc,1,52,NULL);
        LineTo(hdc,100,200);
        EndPaint( hwnd, &ps );

        hdc = GetDC(hwnd);
        SetPixel(hdc,300,300,RGB(255,255,255));
        EndPaint( hwnd, &ps );
    }
    break;
4

1 回答 1

0

在处理 WM_PAINT 时使用 BeginPaint/EndPaint,这将强制执行 GetDC 不执行的背景绘制。

于 2018-07-20T18:39:36.253 回答