Chcę dynamicznie zmieniać rozmiar CButton na szerokość tekstu w nim zawartego. Czy jest to albo wbudowany sposób, aby to zrobić w MFC, albo sposób obliczania szerokości piksela jakiegoś określonego tekstu (tak, żebym mógł użyć CWnd::SetWindowPos
)?Pobierz szerokość tekstu w MFC
Odpowiedz
Możesz użyć CDC::GetTextExtent, aby obliczyć szerokość tekstu w określonej czcionce. Użyj CWnd::GetDC, aby uzyskać kontekst urządzenia z kontrolki wyświetlającej tekst.
To żmudne. Należy użyć przycisku CWnd::GetFont()
na przycisku, aby uzyskać czcionkę, której używa, a następnie użyć standardu GetTextText
na obiekcie CDC
, w którym zostanie wybrana ta czcionka. Wygląda to mniej więcej tak
CClientDC dc(&button);
CFont * pOldFont = dc.SelectObject(button.GetFont());
... dc.GetTextExtent...
dc.SelectObject(pOldFont);
oprócz użytkownika @ demoncodemonkey odpowiedź, można zadzwonić CDC::DrawText z flagą DT_CALCRECT
. W ten sposób tekst nie zostanie narysowany, ale CRect przekazany do funkcji będzie miał szerokość i wysokość tekstu do narysowania.
Jest to szczególnie przydatne, jeśli chcesz narysować tekst z podziałem wiersza (przy użyciu flagi DT_WORDBREAK
). Nie będziesz mógł tego zrobić, używając 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
);
- 1. MFC - zmiana koloru tekstu sterowania tekstem spoczynkowym
- 2. vim szerokość tekstu reformat
- 3. Jak ograniczyć szerokość tekstu?
- 4. Pobierz szerokość obrazu załadowanego w JavaScript
- 5. Dynamiczna maksymalna szerokość dla tekstu
- 6. Zawijanie tekstu Qml (maksymalna szerokość)
- 7. Ustaw szerokość automatycznie bloku tekstu
- 8. Dziwna szerokość wprowadzania tekstu w jQuery Mobile
- 9. jak zmierzyć szerokość tekstu w kineticjs?
- 10. Czy MFC zapewnia szybki sposób na wyrzucanie tekstu do schowka?
- 11. Usuwanie menu w MFC
- 12. Dostosowywanie tekstu do Highchart Tooltip Maksymalna szerokość
- 13. Szerokość w pikselach tekstu/podpisu w Delphi 7
- 14. Pobierz szerokość i wysokość komponentów w widoku Fragmenty
- 15. Android: pobierz szerokość układu programowo z fill_parent w swoim xml
- 16. Funkcja pomiaru MFC w milisekundach
- 17. Jak utworzyć GUID w MFC
- 18. Zmiana rozmiaru kontrolek w MFC
- 19. Jak zastosować nową szerokość tekstu do całego buforu w Vim
- 20. Z grubsza przybliża się szerokość łańcucha tekstu w Pythonie?
- 21. Ogranicz szerokość obramowania do szerokości tekstu w elemencie bloku
- 22. C#: Szerokość pasującego piksela tekstu renderowanego w przeglądarce
- 23. Dynamicznie dostosuj szerokość tekstu w tekście HTML do treści
- 24. Jak zabić wątek MFC?
- 25. Błąd C1189 MFC
- 26. MFC: funkcja GetCurrentDirectory
- 27. Wymiarowanie okna MFC
- 28. MFC przeglądarka folderu IFileOpenDialog
- 29. Pobierz kolor tła okna
- 30. JS - pobierz szerokość i wysokość obrazu z kodu base64
Czy występuje różnica wydajności między 'GetTextExtent' i' DrawText'? – Richard