2010-02-19 50 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);