WM_PAINT不重绘数字

时间:2017-04-23 23:50:34

标签: c++ c winapi

当我隐藏窗口时,部分图形会被删除。我正在使用cout来显示我的代码运行的位置,似乎每个函数都被执行但图像没有重绘

case WM_PAINT:{
        hDC = BeginPaint(ventana,&ps);
        FillRect(hDC,&ps.rcPaint,CreateSolidBrush(RGB(100,100,100)));
        if(hDC){
            CreateFrame(300,200,100,50,&hDC,&ps);
            EndPaint(ventana,&ps);
        }
        break;
    }

“CreateFrame”功能

int CreateFrame(long x,long y,long ancho,long alto,HDC* dc,PAINTSTRUCT* ps){
RECT rc;
HBRUSH pincel = CreateSolidBrush(RGB(255,0,0));
rc.left = ps->rcPaint.left + x;
rc.top = ps->rcPaint.top + y;
rc.right = rc.left + ancho;
rc.bottom = rc.top + alto;

cout<<rc.left<<" - " << rc.top <<" - "<<rc.right<<" - "<<rc.bottom<<"\n";
if(FrameRect(*dc,&rc,pincel)){
    if(Ellipse(*dc,rc.left+10,rc.top+10,rc.left+20,rc.top+20)){
        cout<<"se dibujo elipse\n";
    }
    cout<<"exito\n";
}
DeleteObject(pincel);
return 1;

}

enter image description here

1 个答案:

答案 0 :(得分:0)

问题解决了xdxd

int CreateFrame(long x,long y,long ancho,long alto,HDC* dc,PAINTSTRUCT* ps){
RECT rc;
HBRUSH pincel = CreateSolidBrush(RGB(255,0,0));
rc.left = x;
rc.top =  y;
rc.right = x + ancho;
rc.bottom = y + alto;

cout<<rc.left<<" - " << rc.top <<" - "<<rc.right<<" - "<<rc.bottom<<"\n";
if(FrameRect(*dc,&rc,pincel)){
    if(Ellipse(*dc,rc.left+10,rc.top+10,rc.left+20,rc.top+20)){
        cout<<"se dibujo elipse\n";
    }
    cout<<"exito\n";
}
DeleteObject(pincel);
return 1;

}