2010-04-13 14 views
6

Por favor, no marcarla como una víctima de esta cuestión por el momento:¿Cómo crear una etiqueta en negrita y cursiva en MFC?

Bold labels in MFC

Esa pregunta no me ayuda; por alguna razón, no veo el rico control de edición. En cambio, creo que tengo que hacerlo en código. aquí es una muestra que encontré:

http://www.tech-archive.net/Archive/VC/microsoft.public.vc.mfc/2006-10/msg00245.html

Mi problema es que yo prefiero no volver a inventar la rueda y la prueba de errores a mí mismo oa través de control de calidad.

Alguien debe haber implementado esto antes. Por favor comparte tu código.

Lo que me gustaría hacer es:

  • mantener el mismo tamaño de fuente, la familia, etc., como en la etiqueta ya creada, pero que sea negrita y cursiva también.
  • Mantenga la huella de memoria razonablemente baja (no cree ningún objeto innecesario nuevo), pero tampoco la aplique en un estado incoherente.

Agradezco su ayuda.

+1

Si no está utilizando un control de edición enriquecida, qué tipo de control de está usando? Texto estático? –

+1

Sí, una etiqueta, también conocido como texto estático. Gracias por la pregunta. –

+1

Además, su actitud de "No quiero hacer ningún trabajo, dame el código" me parece muy grosera. –

Respuesta

7

Deseará hacer lo siguiente antes de que se muestre el control de texto estático en la ventana principal.

  1. obtener un identificador para la ventana: CWnd * pwnd = GetDlgItem(IDC_LABEL);
  2. instalar la fuente de corriente para el texto estático: CFont * pfont = pwnd->GetFont();
  3. Obtener las características de la fuente: LOGFONT lf; pfont->GetLogFont(&lf);
  4. cambiar los campos lfWeight y lfItalic en lf.
  5. Ponga un objeto CFont en su ventana principal, por lo que existirá durante toda la vida de la ventana secundaria.
  6. inicializar el CFont: m_font.CreateFontIndirect(&lf);
  7. Configuración de la fuente en la ventana de texto estático: pwnd->SetFont(&m_font);
+0

Resulta que también necesito llamar a DeleteObject() en la fuente. http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/69089425-f186-47fe-9c32-baa29ac2a50c –

+0

No, eso también fue una mala idea. –

+0

MFC llamará DeleteObject automáticamente cuando se destruya el objeto CFont. –

Cuestiones relacionadas