想在VS2008 MFC 下实现自绘按钮,方法如下:在VS2008MFC下新建一个窗口,及添加一个按钮,将按钮的Owner Draw 设为 True,并添加 OnNMCustomdrawButton1事件,实现如下:void CutextDlg::OnNMCustomdrawButton3(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码 *pResult = 0;
*pResult |= CDRF_NOTIFYITEMDRAW;
*pResult |= CDRF_NOTIFYSUBITEMDRAW;
*pResult |= CDRF_NOTIFYPOSTPAINT; AfxMessageBox(_T("ABC")); CDC *pD;
pD->Attach(pNMCD->hdc );
pD->SetTextColor(RGB(0,0,0));
pD->TextOutW (5,5,_T("AAB"),3);
}但发现,这段代码并不执行,请教 。

解决方案 »

  1.   

    自绘得从CButton派生自己的新类,然后在DrawItem函数里写你的自绘代码。
      

  2.   

    如果不派生新类,则只有在对话框类里来绘制按钮,这样做没啥明显的好处,但是却可能有不少坏处。特别是当有多个按钮要绘制,并且各个按钮需要有自己的状态时(比如有各自的颜色),这时在对话框里维护这么多按钮的绘制和状态,显然不是好方法,如果从CButton派生新类,则可以用一份代码管理所有的按钮。
      

  3.   

    http://topic.csdn.net/u/20100813/16/dceaf5c6-bc9a-4aa7-abce-28963a313a38.html