1 / 22

LOS PROYECTOS DE VISUAL C++

LOS PROYECTOS DE VISUAL C++. archivo .dsw. se utiliza para que Visual C++ cargue el proyecto. contiene las órdenes necesarias para ejecutar los pasos requeridos para obtener el archivo ejecutable correspondiente a la ejecución. archivo .dsp.

kelly-cox
Download Presentation

LOS PROYECTOS DE VISUAL C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LOS PROYECTOS DE VISUAL C++ archivo .dsw se utiliza para que Visual C++ cargue el proyecto contiene las órdenes necesarias para ejecutar los pasos requeridos para obtener el archivo ejecutable correspondiente a la ejecución. archivo .dsp archivo de cabecera principal de la aplicación. Incluye otros archivos de cabecera necesarios para la aplicación (incluido resource.h) y declara la clase de la aplicación CAplicacionApp archivo . h Archivo fuente de la aplicación. Contiene la definición de la clase CAplicacionApp archivo .cpp

  2. LOS PROYECTOS DE VISUAL C++ Este archivo contiene una lista de todos los recursos que la aplicación utiliza, como iconos, mapas de bits y cursores. Se edita con los editores de recursos. archivo .rc archivo .ico Este archivo contiene el icono que utilizará la aplicación, el cual es incluido en el archivo .rc archivo .rc2 este archivo contiene el icono que va a utilizar la aplicación que es incluido por el archivo .rc. Este archivo contiene información utilizada por ClassWizard para editar las clases existentes, añadir nuevas clases, generar los mapas de mensajes y los mapas de datos de las ventanas. archivo .clw

  3. LOS PROYECTOS DE VISUAL C++ Contienen la declaración y definición, respectivamente, de la clase CMainFrame, que se deriva de la clase CFrameWnd y controla todas las características del marco de una aplicación SDI. MainFrm.h y MainFrm.cpp Contienen la declaración y definición, respectivamente, de la clase CAplicacionDoc (el documento). Tales ficheros se editan cuando se tienen que agregar datos especiales e implementar lar órdenes de cargar y guardar del menú archivo. AplicacionDoc.h AplicacionDoc.cpp Contiene la declaración y la definición, respectivamente de la clase CAplicacionView (la vista del documento). Los objetos vista (de la clase CAplicacionView) son utilizados para ver los objetos documento (de la clase CsaludosDoc). saludoView.h saludoView.cpp

  4. DOCUMENTOS Y VISTAS La interfaz de usuario de una aplicación Windows está inicialmente formada por una ventana. Dicha ventana queda definida por un (frame), una barra de título y el menú de control situado a la izquierda del título. La aplicación controla las características específicas de la ventana. La vista es una ventana que actúa como interfaz entre el usuario y los datos almacenados en el documento. Además, es ventana hija de la ventana marco. Control de la posición y apariencia vista, área de trabajo

  5. PARTES ELEMENTALES DE LA APLICACIÓN OBJETO VENTANA MARCO CMainFrame OBJETO DOCUMENTO CAplicacionDoc La arquitectura documento-vista es la característica más importante de la biblioteca MFC OBJETO VISTA CAplicacionView OBJETO APLICACIÓN CAplicacionApp Se pueden tener múltiples vistas en un solo documento

  6. comienzo Función 1 recuperar siguiente evento Función 2 entregar información evento Función 3 ¿salir? Función 4 fin PRINCIPIOS DE PROGRAMACIÓN EN WINDOWS La programación en Windows se conoce como programación conducida por eventos y además en Visual C++, Builder, Delphi, entre otros, es orientada a objetos. Un evento es una acción reconocida por un objeto (una ventana o control). El evento puede ser causado por el usuario (por ejemplo, cuando pulsa una tecla), por el sistema (transcurrido un tiempo), o indirectamente por el código (por ejemplo, cuando el código carga una ventana).

  7. EL LENGUAJE DE WINDOWS Procedimiento de ventanas RESULTADOS MENSAJES RESULTADOS RESULTADOS

  8. INDEPENDENCIA DEL HARDWARE RUTINAS DEL SDK SDK.- Kit de Desarrollo de Software TODO FABRICANTE DE HARDWARE QUE QUIERA QUE SUS PRODUCTOS FUNCIONEN SOBRE WINDOWS, DEBE DE CONSULTAR LOS ESTÁNDARES QUE SE DEFINEN EN MICROSOFT WINDOWS OEM ADAPTATION KIT. QUE DEFINE LAS CAPACIDADES MÍNIMAS DE REQUERIMIENTOS DEL HARDWARE PARA QUE OPERE SOBRE WINDOWS

  9. ARQUITECTURA DE WINDOWS

  10. ARQUITECTURA DE WINDOWS

  11. COMPONENTES DE LAS VENTANAS DE WINDOWS

  12. MANEJADORES (HANDLES) Un handle es un valor entero único, utilizado por Windows para identificar un objeto. Por ejemplo, si se desea pintar un gráfico en una ventana, se necesita obtener un handle a un contexto de dispositivo (DC –device context-) y para ello se requiere conocer el handle de la ventana.

  13. APLICACIONES WINDOWS, FORMA DE EJECUCIÓN • Cuando se ejecuta una aplicación Windows que se ha escrito utilizando la biblioteca de clases MGC básicamente ocurre lo siguiente: • Se construye un objeto global que representa la aplicación. • Windows llama a la función WinMain de la biblioteca MFC. Esta función es el punto de entrada y salida de la aplicación. • WinMain llama a la función InitInstance del objeto aplicación. • El objeto aplicación crea el objeto ventana principal. • El objeto aplicación visualiza el objeto ventana principal. • Win Main llama a la función miembro Run del objeto aplicación. • El objeto aplicación ejecuta el bucle de mensajes. • El objeto ventana principal procesa cualquier mensaje que se produzca.

  14. LA CLASE CObject

  15. COMUNICACIÓN CON WINDOWS Órdenes. Son mensajes WM_COMMAND que se generan cuando el usuario selecciona una orden de un menú, un acelerador o un botón de la barra de herramientas. El mapa de mensajes Utiliza la macro ON_COMMAND ON_COMMAND ( IDM_Guardar, OnGuardar ); afx_msg void OnGuardar( ); Notificación. Son mensaje que Windows envía A una ventana en respuesta a una tecla pulsada, Al pulsar un botón, etc. Esto es, un mensaje del Tipo WM_COMMAND enviado por una ventana Hija a su ventana padre, indicando el evento que Ha ocurrido. Por ejemplo un botón envía un Mensaje BN_CLICKED a su ventana padre para Indicarle que ha sido pulsado. MENSAJES ON_BN_CLICKED ( IDB_Boton1, Boton1_Clic ); afx_msg void Boton1_Clic ( ); Ventana. Son mensajes no relacionados con controles. Se generan por el sistema o por una acción del usuario, por ejemplo cuando el usuario pulsa el botón izquierdo se genera el mensaje WM_LBUTTONDOWN ON_WM_LBUTTONDOWN ( IDB_Boton1, Boton1_Clic ); afx_msg void OnLButtonDown (UINT nFlags, Cpoint point );

  16. COMUNICACIÓN CON WINDOWS • Cada clase del sistema que pueda recibir mensajes tiene su propio mapa de mensajes. El mapa de mensajes asocia los mensajes con los manipuladores que los manejan (funciones miembro que les darán tratamiento). Para unir un mapa de mensajes a una ventana de una aplicación se tiene que: • Añadir en la sección public de la declaración de la clase de la ventana, los manipuladores necesarios para responder a los mensajes enviados a la ventana. Para AppMin, se añadirá un manipulador para que responda al mensaje BN_CLICKED generado al hacer clic sobre un botón. • Añadir también la macro DECLARE_MESSAGE_MAP en la declaración de la clase de la ventana; en nuestro caso, en la declaración de CVentanaPpal. • Escribir el mapa de mensajes utilizando las macros predefinidas en las MFC. Para escribir un mapa de mensajes para una ventana, utilice las macros BEGIN_MESSAGE_MAP y END_MESSAGE_MAP y añada entre ellas, una entrada por cada mensaje Windows que desee manipular en dicha ventana.

  17. PRIMER PROGRAMA #ifndef __APPMIN_H__ #define __APPMIN_H__ #define IDB_Boton1 101 // identificador del botón #define IDE_Mensaje 102 // identificador de la caja de texto ///////////////////////////////////////////////////////////////// class CAplicacion : public CWinApp { public: BOOL InitInstance(); }; ///////////////////////////////////////////////////////////////// class CVentanaPpal : public CFrameWnd { public: CVentanaPpal(); // constructor // Funciones para manipular mensajes afx_msg void Boton1_Clic(); // Macro para declarar el mapa de mensajes DECLARE_MESSAGE_MAP() }; #endif // __APPMIN_H__

  18. #include <afxwin.h> #include "appmin.h" CAplicacion AppMin; // objeto aplicación AppMin BOOL CAplicacion::InitInstance() { m_pMainWnd = new CVentanaPpal(); m_pMainWnd->ShowWindow( m_nCmdShow ); return TRUE; } CEdit Mensaje; // objeto caja de texto CButton Boton1; // objeto botón de pulsación CVentanaPpal::CVentanaPpal() { // Crear la ventana principal Create( NULL, "Windows - C++", WS_OVERLAPPEDWINDOW, CRect( 175, 100, 465, 300), NULL, NULL, 0, NULL ); // Crear una caja de texto CRect rect( 225, 150, 415, 180 ); ScreenToClient( &rect ); Mensaje.Create( WS_CHILD | WS_VISIBLE | WS_BORDER, rect, this, IDE_Mensaje); PRIMER PROGRAMA // Crear un botón CString Titulo = "Haga clic aquí"; rect.SetRect( 260, 220, 380, 250 ); ScreenToClient( &rect ); Boton1.Create( Titulo, WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, rect, this, IDB_Boton1 ); } // Mapa de mensajes BEGIN_MESSAGE_MAP( CVentanaPpal, CFrameWnd ) ON_BN_CLICKED( IDB_Boton1, Boton1_Clic ) END_MESSAGE_MAP() void CVentanaPpal::Boton1_Clic(void) { Mensaje.SetWindowText( "Hola, ¿qué tal estás?" ); }

  19. Cola de mensajes del sistema Entrada WinMain Bucle de mensajes Cola de mensajes de la aplicación A Función A Cola de mensajes de la aplicación N Función B BUCLE DE MENSAJES Después de la llamada al método ShowWindow, la ventana es visible en la pantalla. Por lo que la aplicación queda en espera de cualquier acción que realice el usuario o el sistema sobre ella. Traduciendo lo anterior en un mensaje que colocará en la cola de mensajes de la aplicación. Una función (Run) recoge mensajes de la cola de mensajes ejecutando un bloque de código denominado bucle de mensajes. Esto es:

  20. BUSCANDO UN MENSAJE EN EL MAPA DE MENSAJES Los mensajes de ventana y de notificación pueden ser manipulados por ventanas (objetos de las clases derivadas de CWnd). Si en el mapa de mensajes de la clase de la ventana en cuestión no existe una entrada para el mensaje en proceso, la búsqueda por ese mensaje continúa en el mapa de mensajes de su clase base y así sucesivamente. En el caso más desfavorable, se ejecuta un manipulador por omisión. Observe que la macro BEGIN_MESSAGE_MAP especifica el nombre de la clase derivada y de su clase base. Por ejemplo: BEGIN_MESSAGE_MAP ( CVentanaPpal, CFrameWnd ) El primer argumento especifica por dónde comienza la búsqueda. El segundo argumento indica por dónde debe continuar la búsqueda. La siguiente figura muestra de una forma clara la ruta seguida para procesar un mensaje. Observe que inicialmente el mensaje es enviado a nuestra ventana.

  21. Clase base CWnd Funciones miembro Sí Mapa de mensajes afx_msg tipo func( ) Funciones miembro CFrameWnd No Sí Mapa de mensajes afx_msg tipo func( ) CVentanaPpal Funciones miembro No Sí Mapa de mensajes afx_msg tipo func( ) Clase derivada PROCESAMIENTO DE MENSAJES EN WINDOWS

  22. LA FUNCIÓN UpdateData La función UpdateData de la clase CWnd permite iniciar los controles de una ventana (formulario o caja de diálogo) o recuperar y validar los datos de los controles de una ventana. Si su argumento es FALSE indica que se están actualizando los datos de los controles de la ventana con el contenido de las variables miembro asociadas. Si su argumento es TRUE indica que se están actualizando las variables miembro con el contenido de los controles vinculados con ellas. Ventana UpdateData(FALSE) Variables miembro UpdateData(TRUE)

More Related