Кнопка MFC с растровым изображением и текстом

У меня есть Custom CButton, который загружает растровое изображение, используя CButton::SetBitmap(bitmap);

Тем временем я хочу отобразить текст над растровым изображением, на той же кнопке.

Я пытался реализовать 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);
}

Что я могу сделать, чтобы отобразить текст тоже?

2 ответа

Решение

Используйте GetClientRect(). Аргумент, передаваемый в DrawText(), должен быть в клиентских координатах.

Тем не менее, забудьте об этом и используйте CMFCButton. Это намного лучше, чем что-либо, что вы можете написать сами за разумное время.

Попробуй это

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 );
Другие вопросы по тегам