Red de conocimiento informático - Problemas con los teléfonos móviles - Algunos problemas al escribir editores de texto en VC++.

Algunos problemas al escribir editores de texto en VC++.

Los asistentes de Microsoft Visual C++ se han mejorado ligeramente con cada versión, y mientras te concentras en un asistente en particular, no es sorprendente que te pierdas algo al configurar tu aplicación.

Esta sección examina aplicaciones de un solo documento, que quizás haya utilizado para escribir un pequeño editor de texto u otro editor de documentos liviano de uso general. En este ejemplo, crearemos un editor de texto enriquecido que puede editar texto correctamente sin tener que trabajar mucho. En capítulos posteriores de este libro, agregaremos nuevas funciones a este programa para hacerlo más práctico.

Al iniciar este proyecto, use Archivo|Nuevo para mostrar el cuadro de diálogo Nuevo, seleccione el tipo de proyecto MFC AppWizard (EXE) y escriba el nombre de la aplicación en el campo Nombre del proyecto. La aplicación de muestra usa Sng1_Doc como. el nombre de la aplicación, pero también se puede utilizar cualquier nombre similar a este. Haga clic en Aceptar, el sistema muestra el cuadro de diálogo MFCAppWizard - Paso 1, seleccione la opción Documento único y luego haga clic en Siguiente. El sistema muestra el cuadro de diálogo MFC AppWizard - Paso 2 de 6 como se muestra a continuación.

Este es el primer lugar donde debes tomar una decisión. Si desea agregar soporte de base de datos a su aplicación, debe decidir qué nivel de soporte desea en MFC AppWizard. Dedicaremos algún tiempo a discutir esto en detalle en la Parte 2 de este libro, por lo que no entraré en detalles. detalles aquí. Haga clic en Siguiente y verá el cuadro de diálogo Paso 3 como se muestra a continuación.

La parte superior de este cuadro de diálogo determina qué nivel de soporte OLE se agrega a la aplicación. Cuanto más soporte se agrega, más grande se vuelve la aplicación. El nivel de soporte OLE más básico se utiliza como contenedor (Container). Los contenedores pueden actuar como clientes y almacenar objetos vinculados e incrustados. El siguiente nivel de compatibilidad con OLE es el miniservidor, que permite la creación de documentos compuestos que no pueden funcionar de forma independiente. Además, sólo puede operar en objetos incrustados. Cuando se utiliza como servidor, un servidor con todas las funciones (Full-Server) tiene todas las funciones de OLE, pero no se puede utilizar como contenedor. Una aplicación de este tipo es muy similar a Microsoft Paint. Puede incrustar o vincular documentos de Microsoft Paint en su aplicación, pero Microsoft Paint no puede almacenar otras entradas ni vincularlas a su aplicación, pero Microsoft Paint no puede almacenar objetos creados por otras aplicaciones. Finalmente, la opción Tanto Contenedor como Servidor le brinda a su aplicación toda la funcionalidad del soporte OLE nativo. Puede utilizar su aplicación como servidor OLE o como cliente OLE. Sin embargo, esta aplicación no se puede utilizar como navegador de Internet porque no está diseñada como un servidor de documentos ActiveX.

Tenga en cuenta que hay dos casillas de verificación debajo del último botón de opción (tanto contenedor como servidor). Si selecciona la primera casilla, Visual C++ también agregará el soporte requerido para ActiveXDocument Server. Active Document Server puede crear y administrar documentos ActiveX. La segunda casilla de verificación es Contenedor de documentos activos, que permite que su aplicación contenga documentos ActiveX dentro de su marco. Básicamente, le permite incrustar documentos generados por aplicaciones como Microsoft Word o Excel dentro de su aplicación. Ahora, seleccionamos la opción Tanto Contenedor como Servidor y marcamos la casilla de verificación Servidor de documentos activo. Exploraremos los detalles de esta selección en el Capítulo 11.

Hay otras dos casillas de verificación importantes en el cuadro de diálogo Paso 3. La primera es Automatización, que suele ser una casilla de verificación marcada para aplicaciones grandes. La automatización le permite manipular objetos creados por otras aplicaciones y también permite a los clientes de automatización manipular objetos creados por su aplicación. De ahora en adelante, también puede pensar en la automatización como una capacidad programable, aunque esto no es muy preciso (la definición completa de automatización es bastante larga y debe explicarse claramente, como discutiremos en los capítulos siguientes de este libro). pregunta).

La segunda opción es Control ActiveX. Si desea utilizar algún control OCX en su aplicación (independientemente de si los controles OCX están diseñados como controles ActiveX), debe seleccionar esta casilla de verificación. Asegúrese de que las casillas de verificación Control ActiveX y Automatización estén seleccionadas y luego haga clic en Siguiente. El sistema muestra el cuadro de diálogo Paso 4 como se muestra a continuación.

La parte superior del cuadro de diálogo se utiliza para seleccionar los tipos de elementos de la interfaz a incluir en la aplicación. En circunstancias normales, deje la configuración predeterminada de Visual C++, que creará aplicaciones estándar. Si desea proporcionar ayuda contextual a los usuarios, seleccione la casilla de verificación Ayuda contextual. En el Capítulo 15 veremos formas de agregar ayuda contextual a sus aplicaciones.

Las siguientes dos opciones en este cuadro de diálogo le permiten agregar soporte de comunicación a su aplicación. La primera opción es específicamente para correo electrónico y, con esta opción marcada, la aplicación puede enviar y recibir correo electrónico (siempre que la aplicación de correo electrónico sea compatible con MAPI). La segunda opción permite que las aplicaciones se comuniquen a través de una red TCP/IP. Seleccione esta casilla de verificación si desea agregar soporte de Internet a su aplicación.

Visual C++ incluye nuevas funciones que permiten elegir la apariencia de las barras de herramientas. Podemos elegir la apariencia Normal-mal usando la barra de herramientas estándar de C++, o podemos elegir la nueva apariencia proporcionada por Internet Explorer. Hay dos beneficios al usar la opción ReBars de Internet Explorer: podemos agregar cualquier control de Windows a la barra de herramientas (no solo comandos de menú), o podemos "hacer flotar" ReBars como una barra de comandos.

Las dos opciones restantes son la cantidad de archivos que figuran en la lista de archivos usados ​​recientemente y un misterioso botón titulado Avanzado. Normalmente, configuro el número de archivos enumerados en la lista de archivos usados ​​recientemente en el valor más grande posible porque a menudo trabajo con muchos documentos. Darle al usuario la máxima flexibilidad aquí no afecta el tamaño y la velocidad de la aplicación, por lo que configurarlo al mayor valor posible no es gran cosa.

Ahora echemos un vistazo al botón Avanzado. Haga clic en este botón y el sistema mostrará el cuadro de diálogo Opciones avanzadas como se muestra en la siguiente figura. Este cuadro de diálogo es el lugar para configurar los parámetros del documento y también el lugar para seleccionar configuraciones como el texto que se muestra en la barra de título cuando se muestra. el usuario lo utiliza. El nombre del documento actual también se mostrará en la barra de título.

Configure el cuadro de diálogo Opciones avanzadas como se muestra arriba. La aplicación completa utiliza archivos con la extensión . Finalmente, cuando se muestra el cuadro de diálogo de propiedades del documento creado por la aplicación, el cuadro de diálogo mostrará que el tipo de documento es "Documento único XYZ". Haga clic en el botón Cerrar para aceptar la configuración anterior, haga clic en Siguiente dos veces y el sistema mostrará el cuadro de diálogo Paso 6 como se muestra a continuación.

Este es otro lugar donde te voy a dar consejos. Si realmente no estás prestando atención, puedes pasar por alto el hecho de que puedes usar cualquier clase base que desees en tu clase de vista de documento.

¿Por qué deberíamos centrarnos en la elección de la clase base? Si acepta la configuración predeterminada de Visual C++, debe escribir código para cualquier operación del documento por parte de la aplicación. No hay nada de malo en la configuración anterior cuando crea un documento completamente nuevo, pero la mayoría de las aplicaciones no crean un documento completamente nuevo, sino que crean uno que es similar a otras aplicaciones y proporciona lo que otras aplicaciones ofrecen. En este ejemplo, estamos creando un editor de texto, por lo que no es necesario usar CView (la clase base predeterminada de la aplicación). Elegir la clase CEditView o CRichEditView como clase base de la aplicación ahorrará mucho trabajo porque la aplicación ya es The. El diseño ya sabe cómo un simple programa de procesamiento de textos debe realizar sus tareas. Ni siquiera necesita agregar ningún código para obtener la funcionalidad anterior.

Para demostrar el papel de la clase base, en el programa de muestra seleccionamos CRichEditView como la clase base de la clase CSng1_DocView. Haga clic en el botón Finalizar para completar la configuración. Cuando vea el cuadro de diálogo Nueva información del proyecto, haga clic en Aceptar y Visual C++ creará la aplicación de ejemplo.

Ahora compila la aplicación y comienza a ejecutarla. Verás que puedes ingresar texto en la aplicación y guardarlo en un documento XYZ. Después de agregar algo de código, la aplicación puede leer otros textos y documentos RTF. Por supuesto, esta aplicación también se puede ampliar de otras formas. Por ejemplo, dado que la aplicación utiliza controles de edición de texto enriquecido, puede agregarle capacidades de color y formato de texto. Las capacidades OLE que hemos agregado significan que se pueden insertar imágenes en documentos cuando sea necesario. La aplicación terminada tiene muchas funcionalidades potenciales con muy poco trabajo.

En caso de que aún no lo hayas notado, este programa de ejemplo en particular no te pide que escribas una sola línea de código. El programa final es tan perfecto que los programadores de C ni siquiera pueden imaginarlo. La Figura 2.4 muestra los resultados de esta aplicación hasta el momento y la mejoraremos aún más a medida que avance el libro.