我想動態地調整一個CButton的大小,使其在文本中的寬度。有沒有一種內置的方式來做到這一點在MFC中,或者計算某些指定文本的像素寬度的方式(以便我可以使用CWnd::SetWindowPos
)?在MFC中獲取文本寬度
5
A
回答
6
您可以使用CDC::GetTextExtent來計算特定字體中文本的寬度。使用CWnd::GetDC從顯示文本的控件獲取設備上下文。
6
這很乏味。您需要在按鈕上使用CWnd::GetFont()
以獲取正在使用的字體,然後在CDC
對象上使用標準GetTextText
,您將在該對象上選擇該字體。 它看起來像
CClientDC dc(&button);
CFont * pOldFont = dc.SelectObject(button.GetFont());
... dc.GetTextExtent...
dc.SelectObject(pOldFont);
4
除了@ demoncodemonkey的回答,您可以撥打CDC::DrawText與DT_CALCRECT
標誌。這樣,文本將不會被繪製,但您傳遞給該函數的CRect將具有要繪製的文本的寬度和高度。
如果要使用換行符繪製文本(使用DT_WORDBREAK
標誌),這特別有用。你將無法使用CDC::GetTextExtent
來做到這一點。
1
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
);
相關問題
- 1. 如何在MFC中獲取可見的顯示器寬度?
- 2. 獲取文本節點的寬度
- 3. SVG獲取文本元素寬度
- 4. jquery獲取文檔寬度
- 5. 獲取文本高度取決於寬度
- 6. 如何在FreeType中獲取文本寬度?
- 7. 使用文本溢出獲取跨度文本的寬度:省略號;在IE11
- 8. 從文件中獲取標籤寬度
- 9. 獲取文檔的寬度和高度
- 10. 獲取文本去在Firefox中的文本區域的整個寬度
- 11. UILabel固定寬度/固定高度獲取文本編號
- 12. 通過文本寬度獲取單詞的打印長度
- 13. 如何獲取文本的寬度/高度
- 14. 獲取System.Drawing.Font寬度?
- 15. 獲取appwidget寬度
- 16. 獲取高度和寬度
- 17. 獲取特定字體配置中文本的實際寬度?
- 18. 如何獲取操作欄中文本視圖的寬度?
- 19. 在隱藏溢出的父級獲取文本內容寬度
- 20. 在Wpf中獲取自動調整寬度的按鈕寬度
- 21. 如何在NGUI中獲取相機寬度和按鈕寬度
- 22. 獲取reCaptcha的寬度並使用它設置文本字段寬度?
- 23. JQuery在PX中獲取元素寬度
- 24. 在onStart()中獲取片段寬度0
- 25. 獲取CardView在Adapter.onBindViewHolder中的寬度
- 26. iPhone:在cellForRowAtIndexPath中獲取UILabel寬度
- 27. 如何在ViewModel中獲取ContentControl寬度?
- 28. Android:在佈局中獲取寬度
- 29. Android:在onConfigurationChanged中獲取WebView寬度
- 30. 在wordpress中獲取桌面寬度
'GetTextExtent'和'DrawText'之間是否存在性能差異? – Richard 2014-03-11 17:08:37