如何绘制MFC元素?

时间:2014-08-11 07:40:06

标签: mfc

我对MFC不是很擅长。 我想要做的就是按下按钮时的绘画元素(例如按钮)。我找到了这个,但它只适用于渲染对话框。

HBRUSH CSmartDeviceDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
   if (nCtlColor==CTLCOLOR_STATIC)
   { 
      return  a;
   }
   if (nCtlColor==CTLCOLOR_EDIT){  
      return  a;
   }
   return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);;
}

给我一​​些建议如何将其改为如此:

void CSmartDeviceDlg::OnClick()
{
    //some code to paint my elements
}

未来回复的Thx并且不严格判断=)

2 个答案:

答案 0 :(得分:0)

显然,您应该将对话框放在对话框的物理位置。代码方面,您应该覆盖onDraw按钮以绘制自定义按钮。

您将实现的目标取决于您想要对按钮执行的操作,您可以覆盖与实际绘图矩形一样低的代表按钮并随意绘制它的任何内容。

答案 1 :(得分:0)

您需要invalidate the rectangle占用您的元素以强制窗口重新绘制它们,例如

CRect rcElement;
GetDlgItem(IDC_ELEMENT)->GetWindowRect(&rcElement); // in screen coordinates
ScreenToClient(&rcElement); // convert to client coordinates
InvalidateRect(&rcElement);

请注意,这可能导致"闪烁"因为背景将在元素重新绘制之前被删除。