回 帖 发 新 帖 刷新版面

主题:返回值的问题

BOOL CP18CheckBoxDemoDlg::OnEraseBkgnd(CDC* pDC) 
{
    // TODO: Add your message handler code here and/or call default
    //WM_ERASEBKGND消息响应函数
    //先绘制默认的背景
    BOOL bRet=CDialog::OnEraseBkgnd(pDC);

    int nRed,nGreen,nBlue;
    nRed=m_chk_red.GetCheck()?255:0;
    nGreen=m_chk_green.GetCheck()?255:0;
    nBlue=m_chk_blue.GetCheck()?255:0;

    //根据选择组成色。
    COLORREF crFore=RGB(nRed,nGreen,nBlue);
    //创建指定色的画刷 
    CBrush brush;
    brush.CreateSolidBrush(crFore);
    //将画刷选入DC
    CBrush *pOldBrush=pDC->SelectObject(&brush);
    //根据选择绘制矩形或圆形
    RECT rc={10,10,150,120};
    if(m_rd_rect.GetCheck()){pDC->Rectangle(&rc);}
    else pDC->Ellipse(&rc);
    //恢复DC原状
//    pDC->SelectObject(pOldBrush);
    //return bRet;
    return CDialog::OnEraseBkgnd(pDC);
}
请问:为什么以上程序无显示,但是用return bRet,就正常。

回复列表 (共1个回复)

沙发

你不是用 CDialog::OnEraseBkgnd(pDC) 又将它擦掉了嘛?

我来回复

您尚未登录,请登录后再回复。点此登录或注册