Получите текстовую ширину в MFC

Много возможностей. Например,

return str1.GetHashCode() ^ str1.GetHashCode()

5
задан Smashery 16 November 2009 в 23:59
поделиться

3 ответа

Вы можете использовать CDC :: GetTextExtent для вычисления ширины текста определенного шрифта. Используйте CWnd :: GetDC , чтобы получить контекст устройства из элемента управления, отображающего текст.

6
ответ дан 18 December 2019 в 08:29
поделиться

Это утомительно. Вам нужно использовать CWnd :: GetFont () на кнопке, чтобы получить шрифт, который она использует, а затем использовать стандартный GetTextText для объекта CDC , где вы выберет этот шрифт. Это выглядит примерно так:

CClientDC dc( &button );
CFont * pOldFont = dc.SelectObject( button.GetFont() );
 ... dc.GetTextExtent...
dc.SelectObject( pOldFont);
8
ответ дан 18 December 2019 в 08:29
поделиться

В дополнение к ответу @moncodemonkey вы можете позвонить по CDC :: DrawText с флагом DT_CALCRECT . Таким образом, текст не будет нарисован, но CRect, который вы передаете функции, будет иметь ширину и высоту текста для рисования.

Это особенно полезно, если вы хотите рисовать текст с разрывами строки (используя Флаг DT_WORDBREAK ). Вы не сможете сделать это с помощью CDC :: GetTextExtent .

4
ответ дан 18 December 2019 в 08:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: