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

У меня есть пользовательский 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);
}

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


person melculetz    schedule 19.02.2010    source источник


Ответы (2)


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

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

person Roel    schedule 19.02.2010

Попробуй это

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 );
person kiddo    schedule 01.03.2010