Red de conocimiento informático - Problemas con los teléfonos móviles - Controles de programación de Windows

Controles de programación de Windows

Teoría:

RichEdit proporciona muchas características deseables de las que carecen los controles de edición simples y comunes, como el uso de múltiples fuentes y tamaños de fuente, deshacer/rehacer en varios niveles, búsqueda de texto, objetos OLE incrustados y funciones de arrastrar y -edición suelta, etc. Dado que el control RichEdit tiene tantas funciones, existe en un archivo DLL independiente. Esto significa que si desea utilizar el control RichEdit, no puede simplemente llamar a la función InitCommonControls como otros controles normales. El archivo RichEdit DLL primero debe cargarse usando LoadLibrary. Hay un problema aquí, es decir, el control RichEdit * * * tiene tres versiones hasta ahora, versiones 1, 2 y 3. La siguiente tabla muestra los nombres de los archivos DLL correspondientes a cada versión. Nombre de DLL Versión de Richedit Nombre de clase de Richedit Riched32. DL1.0 Richedit Riched20. DL2.0 Richedit 20 Riched20. DL3.0 Richedit 20a ¡Notarás que ambas versiones 2 y 3 usan el mismo nombre de archivo DLL y también usan el mismo nombre de clase! Esto puede causar problemas cuando desea utilizar la funcionalidad RichEdit 3.0 explícitamente. Hasta ahora he encontrado una forma formal de diferenciar entre las versiones 2.0 y 3.0. Sin embargo, existe una solución que funciona bien, que os mostraré más adelante. RichEdit = LoadLibrary(RichEdit DLL);

......

Biblioteca gratuita (hRichEdit);

lt/FONT gt cuando RichEdit DLL Cuando; Una vez cargado el archivo, registrará la clase de ventana Richedit, por lo que deberá cargar la DLL antes de crear el control Richedit. El nombre de clase del control Richedit es diferente. Ahora quizás tengas una pregunta: ¿Cómo sé qué versión del control Richedit quiero usar? Si no necesita utilizar esas funciones especiales, es posible que utilizar la última versión no sea lo más apropiado. La siguiente tabla enumera las funciones proporcionadas por cada versión de RichEdit. Características Versión 1.0 Versión 2.0 Versión 3.0 Seleccionar una barra Reconocimiento de URL xx teclas de acceso directo compatibles xx operación sin ventanas xx carácter de nueva línea CRLFCRCR (puede simular la versión 1.0). zoomx numeración de párrafos x simple TableX Estilos normal y de encabezado color xundeline texto oculto x fuente Encuadernación La tabla anterior no está completa: solo enumeré aquellas funciones importantes. Cree el control RchEdit y cargue la dll. archivo, puede llamar a CreateWindowEx para crear el control RichEdit. Al crear un control, puede utilizar estilos de control de edición y estilos de ventana normales, excepto ES_LOWERCASE, ES_UPPERCASE y estilo. CW_usedefault, CW_usedefault, CW_usedefault, hwnd, (hmenu) richeditid, g_hinstance, nulo.

Establecer texto y colores de fondo predeterminados Al usar controles de edición, puede haber algunos problemas al configurar el texto y los colores de fondo, pero este problema se ha solucionado en el control RichEdit. Para establecer el color de fondo de RichEdit, debe enviar un mensaje EM_SETBKGNDCOLOR al control RichEdit. El mensaje tiene la siguiente sintaxis. wParam == opciones de color.

Si es 0, Windows utilizará el valor de color en lParam como color de fondo. Si este parámetro no es 0, Windows utilizará el color de fondo del sistema. Debido a que enviamos este mensaje para cambiar el color de fondo, wParam debe establecerse en 0.

LParam == Estructura COLORREF que especifica el color a establecer, solo es válido cuando wParam es 0. Por ejemplo, si quiero configurar el fondo en azul sólido, necesito escribir el siguiente código: sendmessage (hwnd Richedit, em_setbkgndcolor, 0, 0x 0000); para configurar el color del texto, el control RichEdit proporciona otro mensaje nuevo; . EM_SETCHARFORMAT hace el trabajo. Este mensaje controla el formato del texto seleccionado o de todo el texto del control. La sintaxis de este mensaje es la siguiente: wParam == opción de formato: SCF_ALL Esta operación afecta a todo el texto del control. SCF_SELECTION Esta operación sólo afecta al texto seleccionado SCF_WORD o SCF_SELECTION. Sólo se verán afectadas las palabras seleccionadas. Si la selección está vacía, solo el punto de inserción (cursor) se establece en la posición de la palabra especificada. El indicador SCF_WORD debe usarse con SCF_SELECTION. lParam == puntero a la estructura CHARFORMAT o CHARFORMAT2. Explique el formato de texto a utilizar. CHARFORMAT2 solo está disponible en Richedit 2.0 y posteriores. Esto no significa que tengas que usar CHARFORMAT2 después de RichEdit 2.0. Si no necesita utilizar las nuevas funciones de CHARFORMAT2, aún puede utilizar CHARFORMAT. Typedef Struct _ Charformat {

UINT cbSize

DWORD dwMask

DWORD dwEffects

Altura larga;

Larga yOffset

COLORREF crTextColor

byte bCharSet

BYTE bPitchAndFamily

TCHAR SZ nombre de cara[LF _ FACESIZE];

} campo CHARFORMAT NombreDescripcióncbTamaño es el tamaño de la estructura. El control RichEdit utiliza este campo para determinar si la versión de la estructura es CHARFORMAT o el indicador de bits CHARFORMAT2dwMask, que especifica que los siguientes miembros son válidos. El valor CFE_BOLD en el modismo CFM_BOLDdwEffects es válido. El miembro CFM_CHARSETbCharSet es válido. El miembro CFM_COLORcrTextColor y el valor CFE_AUTOCOLOR en dwEffects son válidos. El miembro CFM_FACEszFaceName es válido. El valor CFE_ITALIC en el miembro CFM_ITALICdwEffects es válido. CFM_OFFSET El miembro de compensación es válido. c. El valor CFE_PROTECTED en el miembro FM_PROTECTEDdwEffects es válido. El miembro CFM_SizeHeight es válido. El valor CFE_STRIKEOUT en el miembro CFM_strike outweffects es válido. El miembro wefects CFE_U_underlined de CFM es válido. Los valores de subrayado son válidos. dwEffects efectos de personajes. Puede ser una combinación de los siguientes valores.

CFE_AUTOCOLOR utiliza el color del texto del sistema CFE_BOLD caracteres en negrita y negrita CFE_ITALIC caracteres en cursiva CFE_STRIKEOUT caracteres tachados CFE_UNDERLINE caracteres subrayados Los caracteres CFE_PROTECTED están protegidos. Los intentos de cambiar la fuente generarán un mensaje de notificación EN_PROTECTED. yHeight Altura del carácter, en puntas (1/1440 de pulgada o 1/20 del punto de impresión de una impresora). Desplazamiento del carácter yOffset en relación con la línea base, en twips. Si el miembro es un número positivo, los caracteres son subíndices. Si es negativo, el carácter es un subíndice. crTextColor color del texto. Si se especifica el efecto de carácter CFE_AUTOCOLOR, este valor se ignorará. bCharSet conjunto de caracteres BPitHandfamilyFontFamily y Pitch. Nombre de fuente, que es una matriz de caracteres terminada en nulo. _wPad2 padding Al inspeccionar esta estructura, encontrará que podemos cambiar el efecto del texto (negrita, cursiva, tachado y subrayado), el color del texto (crTextColor) y la apariencia/tamaño/juego de caracteres de la fuente. Destaca el logo de CFE_rpoted. El texto con este logotipo se marcará con el logotipo protegido. Esto significa que cuando el usuario intente cambiarlo, se enviará un mensaje de notificación EN_PROTECTED a la ventana principal. Al mismo tiempo, puede permitir si se pueden realizar cambios. Agregue más estilos de texto, como peso de fuente, espaciado, color de fondo del texto, interletraje, etc. Si estas funciones adicionales no son necesarias, utilice CHARFORMAT. Para dar formato al texto, debe considerar el rango de texto al que se aplicará el formato. El control RichEdit introduce el concepto de rangos de texto de caracteres. RichEdit asigna a cada carácter un valor numérico a partir de 0: el primer carácter en el control tiene un valor de ID de 0, el segundo carácter tiene un valor de ID de 1... y así sucesivamente. Para describir un rango de texto, debe proporcionar al control RichEdit dos valores numéricos: el valor de ID del primer y último carácter del rango. Para aplicar formato de caracteres usando EM_SETCHARFORMAT, tiene tres opciones: Aplicar a todo el texto en el control. (SCF_ALL)Se aplica a la geometría seleccionada actualmente. (SCF_SELECTION) se aplica a la palabra seleccionada actualmente. (SCF_WORD o SCF_SELECTION) El primer y segundo caso son relativamente intuitivos y la última opción requiere una pequeña explicación. Si la selección actual cubre solo uno o más caracteres de una palabra, en lugar de toda la palabra, especifique el indicador SCF_WORD SCF_SELECTION para aplicar el formato del cuerpo a toda la palabra. Incluso si no está seleccionado actualmente, solo el punto de inserción (cursor) está en la palabra. En el tercer caso, el formato del cuerpo se seguirá aplicando a toda la palabra. Para utilizar EM_SETCHARFORMAT, es necesario completar el miembro de resultado de la estructura CHARFORMAT (o CHARFORMAT2). Por ejemplo, si queremos establecer el color del texto, debemos completar la estructura CHARFORMAT de la siguiente manera:

cf dw mask = CFM _ color

cf.crTextColor = 0x0FF0000.

SendMessage(hwndRichEdit, EM_SETCHARFORMAT, SCF_ALL, (LPARAM) & cf); el fragmento de código anterior establece el color del cuerpo del control RichEdit en azul sólido. Tenga en cuenta que cuando ocurre EM_SETCHARFORMAT, si no hay ningún cuerpo en el control, el cuerpo escrito después de este mensaje utilizará el formato de cuerpo especificado en el mensaje EM_SETCHARFORMAT.

lt/FONT gt; lt/FONT gt; lt/FONT gt;