簡體   English   中英

在MFC中獲取文本寬度

[英]Get text width in MFC

我想動態地將CButton調整到其中文本的寬度。 是否有內置的方法在MFC中執行此操作,或者計算某些指定文本的像素寬度(以便我可以使用CWnd::SetWindowPos )?

這很乏味。 您需要在按鈕上使用CWnd::GetFont()來獲取它所使用的字體,然后在CDC對象上使用標准的GetTextText ,您將選擇該字體。 它看起來像

CClientDC dc( &button );
CFont * pOldFont = dc.SelectObject( button.GetFont() );
 ... dc.GetTextExtent...
dc.SelectObject( pOldFont);

您可以使用CDC :: GetTextExtent來計算某種字體的文本寬度。 使用CWnd :: GetDC從顯示文本的控件中獲取設備上下文。

除了@ demoncodemonkey的答案之外,您還可以使用DT_CALCRECT標志調用CDC :: DrawText 這樣就不會繪制文本,但傳遞給函數的CRect將具有要繪制的文本的寬度和高度。

如果要使用換行符(使用DT_WORDBREAK標志)繪制文本,這尤其有用。 您將無法使用CDC::GetTextExtent執行此操作。

CClientDC hdc(this);
GetRect.SetRect(0,0,iLabelWidth,0);
//
//To get Height of Lable in advance
//
hdc.DrawText(
                TempData,
                TempData.GetLength(),
                GetRect,
                DT_CALCRECT | DT_MODIFYSTRING | DT_WORDBREAK 
            );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM