壹,新建壹個基於對話框的工程Dlg。
二,增加兩個按鈕,ID分別為IDC_BUTTON1、IDC_BUTTON2,第壹個選中“自畫”屬性。
三,在CDlgDlg類增加壹個變量bool m_bStart ;並在構造函數中將它賦初值為false;
CDlgDlg::CDlgDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDlgDlg::IDD, pParent)
{
m_bStart = false ;
//{{AFX_DATA_INIT(CDlgDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
四,雙擊第二個按鈕,為它增加響應函數,代碼如下:
void CDlgDlg::OnButton2()
{
m_bStart = !m_bStart ;
Invalidate();
}
五,利用類向導在類為WM_DRAWITEM增加響應函數,代碼如下:
void CDlgDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
if( IDC_BUTTON1 == nIDCtl )
{
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
CBrush brush(RGB(255,0,0));
if( m_bStart )
{
dc.SelectObject(&brush);
}
CPoint pt(lpDrawItemStruct->rcItem.left,lpDrawItemStruct->rcItem.top);
dc.Ellipse(&lpDrawItemStruct->rcItem);
}
else
CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}