1.在对话框中添加一个CButton控件,然后在类向导中新建一个继承自CButton的类
class CDisplayArea : public CButton{//...}
2.在该对话框的头文件中声明一个CDisplayArea类的对象,然后和新添加的CButton按钮绑定到一起
class CNDTDisplayDlg : public CDialogEx
{
CDisplayArea m_DispArea;
}
void CNDTDisplayDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX,IDC_DispArea,m_DispArea);
}
3.将该按钮的Owner Draw属性设为True
4.添加CDisplayArea的WM_ERASEBKGND 的消息响应函数,直接返回TRUE
BOOL CDisplayArea::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
return TRUE;
//return CButton::OnEraseBkgnd(pDC);
}
5.重载CDisplayArea的虚函数DrawItem,不必添加代码
void CDisplayArea::DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/)
{
// TODO: 添加您的代码以绘制指定项
}
6.添加CDisplayArea的WM_PAINT消息的响应函数,绘制图像的代码写在这个函数中
void CDisplayArea::OnPaint()
{
CPaintDC dc(this);
//...//绘图代码
}