1、添加一个按钮,设置属性Owner Draw:true
2、添加一个新的按钮类,继承自CButton。如CIconButton
3、为该按钮添加控件型关联变量m_btnOpen,类型为CIconButton
4、为CIconButton类添加图标句柄变量、设置图标的函数:
HICON m_hIcon;
void SetIcon(UINT nID)
{
m_hIcon=AfxGetApp()->LoadIconA(nID);
}
5、重写CIconButton类的虚函数:DrawItem
void CIconButton::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
CDC dc;
dc.Attach(lpDIS->hDC);
CRect rect=lpDIS->rcItem;
dc.FillSolidRect(rect,GetSysColor(COLOR_BTNFACE));
if(lpDIS->itemState & ODS_SELECTED)
{
rect.OffsetRect(1,1);
dc.DrawEdge(&lpDIS->rcItem,BDR_SUNKENOUTER,BF_RECT);
}
else
dc.DrawEdge(&lpDIS->rcItem,BDR_RAISEDOUTER,BF_RECT);
::DrawIconEx(dc.GetSafeHdc(),rect.left,rect.top,m_hIcon,20,20,0,0,DI_NORMAL);
dc.Detach();
}
6、添加Icon资源
7、在OnInitDialog()中调用CIconButton类的SetIcon()为按钮加载图标
m_btnOpen.SetIcon(IDI_ICON2);