2010-02-19 73 views
1

我有一个自定义的CButton加载位图,使用CButton :: SetBitmap(bitmap);位图和文本的MFC按钮

同时,我想在同一个按钮上显示位图上方的文本。

我试图实现OnPaint()方法,但它并没有显示文本,只是位图

void CBitmapToggleButton::OnPaint() 
{ 
    CButton::OnPaint(); 
    CPaintDC dc(this); // device context for painting 

    CString caption(_T("test message")); 
    GetWindowText(caption); 
    CRect rect; 
    GetWindowRect(&rect); 

    dc.DrawText(caption, &rect, DT_CENTER); 
} 

我能做些什么来也显示文本?

回答

3

使用GetClientRect()。传递给DrawText()的参数需要在客户端坐标中。

这就是说,忘记这一点,并使用CMFCButton。这比任何你可以在合理的时间内自己写的东西都要好得多。

0

尝试此

CButton的* PBTN = (CButton的*)函数GetDlgItem(ID_WIZBACK);

pBtn-> ModifyStyle(0,BS_ICON);

HICON hIcn =(HICON)的LoadImage( AfxGetApp() - > m_hInstance,MAKEINTRESOURCE(IDI_ICON3) IMAGE_ICON, 0,0,//使用实际尺寸 LR_DEFAULTCOLOR );

pBtn->SetIcon(hIcn);