Utilice MFC CRichEditCtrl para mostrar un código QR con el tamaño adecuado.
Estoy intentando mostrar un código QR en un CRichEditCtrl
de MFC, pero el tamaño resultante es demasiado pequeño.
Este es el código que estoy usando para insertar el QR en el control de edición:
SETTEXTEX TextInfo = {0};
TextInfo.flags = ST_SELECTION;
TextInfo.codepage = CP_UTF8;
LRESULT res = ::SendMessage(m_editQR.m_hWnd, EM_SETTEXTEX, (WPARAM)&TextInfo, (LPARAM)buffer);
El parámetro “buffer” es una matriz de char
; su contenido se lee de un archivo UTF-8 que contiene la cadena de código QR. Este archivo se muestra de la siguiente manera en Notepad ++:
El código QR también se muestra correctamente si imprimo el mismo búfer en una aplicación de consola que hice para pruebas.
Sin embargo, el código QR se muestra en mi aplicación de prueba MFC de la siguiente manera:
Parece un problema con el tamaño de la fuente utilizada para renderizar el código QR (estoy usando la predeterminada para el control de Rich Edit). Entonces intenté cambiar la fuente y su tamaño.
Este es el código que estoy usando para configurar el formato de caracteres:
CHARFORMAT selCharformat;
m_editQR.GetSelectionCharFormat(selCharformat);
selCharformat.cbSize = sizeof(CHARFORMAT);
selCharformat.dwMask = CFM_FACE | CFM_SIZE | CFM_CHARSET;
selCharformat.yHeight = 20*8;
selCharformat.bCharSet = DEFAULT_CHARSET;
selCharformat.bPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
lstrcpy(selCharformat.szFaceName, _T("Console"));
BOOL bRes = m_editQR.SetSelectionCharFormat(selCharformat);
Pero entonces el código QR está mal, como este:
Supongo que hay un problema con la configuración de mi Rich Edit ctrl, pero no puedo encontrar la configuración correcta (no tengo mucha experiencia con MFC).
¿Podrían ayudarme?
davy.ai
Parece que el problema está en la fuente y el tamaño que se utiliza para renderizar el código QR en el
CRichEditCtrl
.Para solucionar este problema, intenta establecer la fuente y el tamaño del
CRichEditCtrl
en una fuente de ancho fijo comoCourier
y aumenta el tamaño para que coincida con el tamaño del código QR.Puedes probar el siguiente código para establecer la fuente y el tamaño:
“`c ++
CHARFORMAT cf;
cf.dwMask = CFM_FACE | CFM_SIZE | CFM_CHARSET;
cf.cbSize = sizeof (CHARFORMAT);
cf.yHeight = <tamaño del=”” código=”” qr=””>;
cf.bPitchAndFamily = FF_MODERN;
lstrcpy (cf.szFaceName, _T (“Courier”));
m_editQR.SetDefaultCharFormat(cf); // Establece el formato de caracteres predeterminado para el control de edición
m_editQR.SetSel (0, -1); // Selecciona todo el texto en el control
m_editQR.SetSelectionCharFormat(cf); // Aplica el formato de caracteres al texto seleccionado
“`
Asegúrate de reemplazar
<tamaño del="" código="" qr="">
con el tamaño adecuado para tu código QR. También puedes probar a experimentar con diferentes tamaños y tipos de fuentes para ver cuál funciona mejor para tu situación.Además, asegúrate de que las dimensiones del
CRichEditCtrl
estén establecidas correctamente para acomodar el tamaño del código QR. Puede que necesites ajustar el tamaño del control para mostrar el código correctamente.¡Espero que esto ayude!</tamaño></tamaño>