Кнопка MFC с растровым изображением и текстом - PullRequest
1 голос
/ 19 февраля 2010

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

3 голосов
/ 19 февраля 2010

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

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

0 голосов
/ 01 марта 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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...