Cómo escribir aplicaciones de arquitectura Windows CE
Un aspecto clave del desarrollo de programas es alinear su funcionalidad con la interfaz de usuario de Microsoft. Durante el desarrollo, utilicé tantas fuentes y diseños de aplicaciones de Microsoft como fue posible, y se pide a los desarrolladores comerciales que diseñen hermosas interfaces para sus aplicaciones de Windows CE.
Obtener el código
El código fuente de esta rutina se puede descargar desde aquí
Estructura de clases
Todo el código suma varios miles de líneas, *** se divide en 5 archivos. Elegí implementarlo usando Microsoft Foundation Class Library (MFC), que también es muy extensible.
CCNETConfig: Es el hilo principal del programa y se encarga de iniciar la conexión al registro, establecer asociaciones con CPageTab1, CPageTab2 y CPageTab3, para luego generar el cuadro de diálogo modal utilizando una hoja de propiedades independiente. de CCNETConfig.
CPropertySheet: la clase CpropertySheet está básicamente vacía, MFC maneja diferentes hojas de propiedades cuando hace clic en diferentes pestañas y CpropertySheet también es independiente.
CPageTab: la clase CpageTab contiene el código relacionado con la pestaña correspondiente, que completa el guardado, paso y verificación de datos en la página de propiedades.
De forma predeterminada, el software de herramienta integrado carga aplicaciones en el directorio /Windows/Menú Inicio. Si carga su aplicación en el directorio /Windows/Menú Inicio/Configuración, también podrá encontrar los íconos en esa carpeta.
Como se muestra en la Figura C, este programa estructurado tiene tres páginas de propiedades. CpageTab1 maneja tareas relacionadas con las actualizaciones de datos, CpageTab2 maneja tareas relacionadas con la selección de parámetros y CpageTab3 transfiere a cnet.com.
En general, el procedimiento no es complicado. Los programadores pueden transferir fácilmente el código, por ejemplo, a un controlador inalámbrico 802.11b.
Cada clase tiene su propia tabla de variables miembro única, que el entorno de compilación puede configurar a través del DDX de MFC. Ejecute el evento UpdateData(FALSE) en la función OnInitDialog de cada página de propiedades, luego en el evento OnKillActive verifique los parámetros a través de UpdateData(TRUE) y guárdelos en el registro.
Después de que se activa el evento OnKillActive, el programa guardará toda la información en el registro, incluso si ocurre una excepción en el programa. La función OnInitDialog inicializará el programa.
Utilizando el Editor de recursos, creé las tres hojas de propiedades que se muestran en la Figura D. La barra de título sigue los estándares de diseño de otros programas y el texto debajo de la barra de título utiliza las fuentes y colores del otro programa.
La línea recta debajo de la fuente se implementa usando un mapa de bits de 1 bit y se procesa como una imagen. Además, también agregué casillas de verificación, cuadros de texto estáticos, cuadros de edición, cuadros combinados, etc.
Personalizar la fuente y el estilo del cuadro de texto estático
Para obtener la fuente adecuada para el cuadro de texto estático, es necesario activar el evento WindowProc en la clase CpageTab. simplemente envíe el mensaje WM_CTLCOLORSTATIC Cambie la fuente actual y el color de fuente en un cuadro de texto estático.
WM_CTLCOLORSTATIC envía hDC y hWnd al cuadro de texto estático, como se muestra en el Listado A.
Puedes ver que utilicé una variable estática para generar las fuentes y luego sobrecargué esta variable de puntero para cambiar las fuentes. Si no desea cambiar la fuente, es decir, no sobrecargue el evento WindowProc en PropertyPages, el resto del código funcionará bien.
Además de generar las fuentes correctas, también me concentré en diseñar la interfaz para que tuviera el aspecto profesional requerido para un sistema Windows CE.
Genere una hoja de propiedades con páginas de propiedades adjuntas
Para la hoja de propiedades con páginas de propiedades que generé anteriormente, debe estar confundido por todo el proceso. Simplemente utilicé el asistente MFC para generar automáticamente cuatro clases separadas, una derivada de la clase CpropertySheet y tres derivadas de la clase CpropertyPage. En el evento CWinApp::InitInstance, agregué la página de propiedades a la hoja de propiedades, como se muestra en el Listado B.
También di un ejemplo de cómo derivar objetos de CPropertySheet y CpropertyPage en lugar de CPropertySheet y CpropertyPage.
Inicialicé todas las variables y asocié la página con la hoja de trabajo, luego llamé al evento DoModal para generar el cuadro de diálogo modal.
Cuando InitInstance devuelve FALSO, MFC ya no ejecutará el bucle de mensajes del formulario. Puedo generar un cuadro de diálogo no modal usando CPropertySheet::Create() en lugar de CPropertySheet::DoModal(). Si hace esto, el programa devuelve VERDADERO y el bucle del mensaje del formulario continúa. Si genero un cuadro de diálogo no modal y devuelvo FALSO, el programa sale del bucle de mensajes.
Acceder al registro
Para guardar información en el registro, el programa debe ejecutar los eventos OnInitDialog y OnKillActive en la clase CpageTab.
MFC accederá automáticamente al registro y el programa ejecutará las funciones GetProfileInt, GetProfileString, WriteProfileInt y WriteProfileString.
La Figura E muestra cómo asociar selecciones de parámetros en la interfaz con claves de registro. Utilizo el Editor de registro remoto de Windows CE en el software EMbedded Tools 3.0 para ver el registro en el dispositivo remoto.