如题,谢谢

解决方案 »

  1.   

    可以在任何时候任意改变对话框背景任意区域的颜色。
    BOOL CCpDlg::OnEraseBkgnd(CDC *pDC)
    {
         pDC dc(this);
    dc.SetBkMode(TRANSPARENT);
    CRect rt;
    GetClientRect(&rt);
    CBrush cbSel;
    cbSel.CreateSolidBrush(RGB(223, 233, 243));
    dc.FillRect(&rt, &cbSel);
              return TRUE;
    }
    如果要画图,直接使用dc的函数实现各种绘图。
      

  2.   

    在CXXXApp中的InitInstance()函数中添加 SetDialogBkColor(RGB(0,192,192));
    该语句需要放在int nResponse = dlg.DoModal();前
      

  3.   

    画圆操作你可以添加在OnPaint()函数中
      

  4.   

    to aids001(菜鸟) "直接用SetBkColor为啥不行呀"
    其实你都已经知道了,为何还问?这样有炒分的嫌疑哟!
    使用SetBkColor这个函数是可以设置对话框的背景色,但在对话框显示以后就不能再修改它的背景色了。
    使用OnEraseBkgnd(CDC *pDC)消息映射可以在对话框显示后任意修改任意大小范围的背景色,并且在其中使用dc的对象函数可以实现你的画图功能,即画图作为背景,而且比OnPaint()闪烁更小。
      

  5.   

    对于“直接用SetBkColor为啥不行呀”
    jeremyhit(春子) 已经答了: SetDialogBkColor(RGB(0,192,192));
    该语句需要放在int nResponse = dlg.DoModal();前
      

  6.   

    在对话框上画图关键是得到对话框的dc,CClientDC dc(this);然后用这个dc就可以画图了。