我新建了一个基于对话框的工程,在对话框中输入要画的线条的参数:左上角的点,长,宽,线条的宽,线条的颜色...然后用一个按钮触发一个画图事件,在屏幕上画一个矩形框,我想让这个矩形框一直保留在最前端,如何实现重画?我的代码如下:
void CRectangleDlg::OnPaintrect() 
{  
    UpdateData(TRUE);
    CDC*   pWndDC=GetDesktopWindow()->GetWindowDC();  
    CPen   pen;   
    LOGPEN   logpen;   
    logpen.lopnColor=RGB(m_RGBX,m_RGBY,m_RGBZ);   
    logpen.lopnStyle=PS_SOLID;   
    logpen.lopnWidth.x=m_ThreadWidth;   
    pen.CreatePenIndirect(&logpen);       
    pWndDC->SelectObject(&pen);
    pWndDC->MoveTo(m_LeftVertexx,m_LeftVertexy);
    pWndDC->LineTo(m_LeftVertexx+m_Length,m_LeftVertexy);
    pWndDC->LineTo(m_LeftVertexx+m_Length,m_LeftVertexy+m_Width);
    pWndDC->LineTo(m_LeftVertexx,m_LeftVertexy+m_Width);
    pWndDC->LineTo(m_LeftVertexx,m_LeftVertexy);}

解决方案 »

  1.   

    矩形框最后画。
    把图先画到内存DC中,在WM_PAINT消息中用BitBlt将图象贴到窗口上。
      

  2.   

    好象我也没看明白问题,你的目的就是在屏幕上显示一个矩形框,让其保持在其它窗口的前面是吗?
    创建一个无边框的TopMost窗口,根据设定的线条宽度,用SetWindowRgn把中间裁剪掉,只留4个边,把窗口背景设置为指定的颜色。
      

  3.   

    那个函数应该在OnPaint函数中调用。
      

  4.   

    把画线写一个函数,并把该函数加到OnPaint中