收录日期:2018/07/17 00:24:58 时间:2016/05/18 06:54:46 标签:基础类
请问如何在CButton控件上同时显示文本和图标? 谢谢大家了!
兄弟,上MFC开发者指南网站,上面有基于CButton封装的按钮类,支持你所说的。
http://www.vchelp.net/vchelp/vchelp.asp
继承CButton,定义自己的按钮类:
class CPlayButton : public CButton
{
public:
CPlayButton();

public:

// 
//{{AFX_VIRTUAL(CPlayButton)
public:
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
//}}AFX_VIRTUAL
         void ShowIcon(int nType);
DWORD SetIcon(DWORD nID)
}
void CPlayButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
// TODO: 
CDC *pDC;
pDC = CDC::FromHandle(((LPDRAWITEMSTRUCT)lpDrawItemStruct)->hDC);
pDC->DrawIcon(0,0,m_hIcon);
}


DWORD CPlayButton::SetIcon(DWORD nID)
{
m_hIcon= AfxGetApp()->LoadIcon(nID);

if (NULL == m_hIcon)
    return 0;
return 1;
         Invalidate();
}

你的调用:
BOOL CMiniPlayerDlg::OnInitDialog()
{
CDialog::OnInitDialog();
.......
         CPlayButton playBtn;
         playBtn.SetIcon(图标ID);
.......
}
谢谢你了!
我试一试。
不错
图方便的话你也可以用CButtonST
http://www.codeproject.com/buttonctrl/cbuttonst.asp
谢谢,我已经使用CButtonST了,但是为什么我只能在最多两个按扭上加图标,超过两个就会出现错误!
仔细看看例程
没问题的 我在用
谢谢你,我已经看过例程了,但问题依然存在,是这样的:
新建一个工程,在程序里加入CButtonST类。这样就可以显示多个图标按扭了。
可是如果在以前建立好了程序中加入CButtonST类后,就只能改变最多两个按扭。