首页 > 解决方案 > 将窗口移到屏幕外时,Winapi 编辑控件消失

问题描述

我正在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;

标签: c++winapicontrolsedit

解决方案


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


推荐阅读