Quiero cambiar el tamaño de un CButton dinámicamente al ancho del texto dentro de él. ¿Hay alguna forma incorporada de hacer esto en MFC, o una forma de calcular el ancho de píxel de algún texto especificado (para que pueda usar CWnd::SetWindowPos
)?Obtener ancho de texto en MFC
Respuesta
Puede usar CDC::GetTextExtent para calcular el ancho del texto en una fuente determinada. Use CWnd::GetDC para obtener el contexto del dispositivo del control que muestra el texto.
Es tedioso. Debe usar CWnd::GetFont()
en el botón para obtener la fuente que está usando, y luego usar el estándar GetTextText
en un objeto CDC
donde habrá seleccionado esa fuente. Parece algo así como
CClientDC dc(&button);
CFont * pOldFont = dc.SelectObject(button.GetFont());
... dc.GetTextExtent...
dc.SelectObject(pOldFont);
Además de la respuesta de @ demoncodemonkey, puede llamar CDC::DrawText con la bandera DT_CALCRECT
. De esta forma, el texto no se dibujará, pero el CRect que pase a la función tendrá el ancho y alto del texto para dibujar.
Esto es especialmente útil si desea dibujar texto con saltos de línea (usando el indicador DT_WORDBREAK
). No podrá hacer eso usando 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. SVG obtener ancho de elemento de texto
- 2. Cómo obtener el ancho/alto del texto
- 3. Medición de ancho de texto en Qt
- 4. ¿Cómo obtener la altura del texto con ancho fijo y obtener la longitud del texto que cabe en un marco?
- 5. Obtener ancho de terminal Haskell
- 6. Detectar el ancho del texto en vb.net
- 7. Ancho de input type = elemento de texto
- 8. Rellenar desplegable en MFC
- 9. ancho de cuadro de texto jeditable
- 10. libraby estática en MFC
- 11. ¿MFC está en desuso?
- 12. Eliminación de menú en MFC
- 13. Onclick Expandir ancho del cuadro de texto
- 14. Obtener el ancho del terminal en C?
- 15. Envoltura de texto Qml (ancho máximo)
- 16. MFC: cambie el color del texto de un control de texto estático
- 17. Obtener ancho de la última línea de UILabel UILabel
- 18. Ancho en píxeles de un texto/título en Delphi 7
- 19. cómo obtener texto de ruta de CMFCEditBrowseCtrl?
- 20. Problema de ancho con sangría de texto negativo en CSS
- 21. Configuración del ancho de la vista de texto en LinearLayout
- 22. Establecer el ancho de columna de texto variable en printf
- 23. área de texto con un ancho de 100% ignora el ancho del elemento padre en IE7
- 24. obtener el ancho calculado en píxeles en Opera
- 25. Recursos/enlaces de MFC
- 26. GLFW ¿obtener altura/ancho de pantalla?
- 27. Alternativa a MFC
- 28. YUI - ¿Obtener ancho de elemento verdadero?
- 29. Obtener el ancho de Monotouch.Dialog UIViewElement?
- 30. Obtener el ancho máximo de uinavigationItem.titleView?
¿Hay una diferencia de rendimiento entre 'GetTextExtent' y' DrawText'? – Richard