程序貌似是这一段有问题
void EveryDayTip::OnPaint()
{
CDC *pDc = this->GetWindowDC();
HPEN hPen;
hPen = CreatePen(PS_SOLID,1,RGB(180,50,80));
pDc->SelectObject(hPen);//
pDc->MoveTo(25,150);//
pDc->LineTo(25,290 );//
pDc->SetBkMode(TRANSPARENT);//
pDc->TextOut(150, 150, _T("150,150"));//
pDc->TextOut(50, 150, _T("50,150 ,4.15~4.14"));//
pDc->TextOut(150, 250, _T("150,250"));//
ReleaseDC(pDc);
}
打开子对话框时,线条是红的,但是过了几秒后就变成黑的了,想要保持颜色,请问该怎么处理?
这是一个建立在子对话框上的图形,直接绘制于子对话上图形对话框MFC

解决方案 »

  1.   

    我昨天刚做的一个项目就是在客户区里面嵌入一个对话框,这个对话框也就成立子框体,要想在子窗体里面绘图,你可以在子窗体的Ondraw里面绘图,绘图的时候最好用双缓冲绘图不然会出现闪烁的问题。
      

  2.   

    pDc->SelectObject(hPen); 要对应的释放
      

  3.   

    HGDIOBJ hOldPen = pDc->SelectObject(hPen); 
    绘图完成要释放:
    pDc->SelectObject(hOldPen); 
    DeleteObject(hPen);
      

  4.   

    要这样:
    HBRUSH hOldPen = (HBRUSH)pDc->SelectObject(hPen);
    pDc->SelectObject(hOldPen );DeleteObject(hOldPen );
      

  5.   

    CPaintDC dc(this);
    HPEN hPen; // 为啥不用CPen?
    hPen = CreatePen(PS_SOLID,1,RGB(180,50,80));
    HPEN hOlePen = (HPEN)dc.SelectObject(hPen);//
    dc.MoveTo(25,150);//
    dc.LineTo(25,290 );//
    dc.SetBkMode(TRANSPARENT);//
    dc.TextOut(150, 150, _T("150,150"));//
    dc.TextOut(50, 150, _T("50,150 ,4.15~4.14"));//
    dc.TextOut(150, 250, _T("150,250"));//
    dc.SelectObject(hOldPen);
    DeleteObject(hPen);
    ReleaseDC(pDc);
      

  6.   

    最有一句ReleaseDC(pDc);不要了。在OnPaint中必须用CPaintDC。