You are on page 1of 19

VISUAL C++

UNIVERSIDAD CATLICA SANTA MARA P.P. INGENIERA DE SISTEMAS CURSO: PROGRAMACIN II M.SC. CARLO CORRALES DELGADO
1 M.Sc. Carlo Corrales

TEMAS A TRATAR

Jerarquas de MFC Notacin Hngara Arquitectura de una aplicacin Anlisis de una aplicacin
La Clase Aplicacin La clase Ventana Marco La clase Documento La clase Vista

Jerarquas de las Ventanas

Jerarquas de MFC

Las clases de la biblioteca MFC se agrupan en:


CObject (4): Arquitectura de una aplicacin, Soporte Grfico, Soporte del Sistema y Colecciones No derivadas de CObject(8): API, Clases de soporte, Modelo de objeto y seriacin, Plantillas para colecciones, Tipos de datos varios, Soporte OLE, Estructuras, Sincronizacin

CObject:Clase raz para la mayora de clases (afx.h)


Creacin y borrado de objetos Soporte para seriacin, Diagnstico Obtener informacin de un objeto en tiempo de ejecucin

DECLARE_DYNCREATE: permite crear objetos de una clase derivada de CObject durante la ejecucin CCmdTarget: objeto que tiene un mapa de mensajes y puede procesarlo
3

Clases de la arquitectura de una aplicacin - CCmdTarget


Objeto Aplicacin: CWinThread -> CWinApp Plantilla de documentos: CDocTemplate Documentos: CDocument Elementos de documento: CDocItem -> COleClientItem, COleServerItem

Clases de la arquitectura de una aplicacin - CCmdTarget

Soporte de ventanas: CWnd -> Marcos, Vistas, Ventanas de Dialogo y Controles


Marcos: CFrameWnd -> SDI y MDI Vistas: CView -> CScrollView -> CFormView >CRecordView, CCrtlView -> CEditView, ClistView, CTreeView Dialogo: Cdialog -> CPropertyPage, CCommonDialog -> CFileDialog, CFontDialog, CColorDialog, etc Controles: CStatic, CEdit, CButton, CComboButton, CListBox, CScroolBar, CTreeCtrl, CListCtrl, COleControl, CStatusBarCtrl, etc Barras de control: CControlBar -> CToolBar, CStatusBar, CDialogBar Hojas de Propiedades: CPropertySheet

Clases de la arquitectura de una aplicacin - CCmdTarget

Soporte Grafico:

Dibujo de graficos: CDC -> CClienteDC, CPaintDC, CWindowDC Objeto de dibujo de graficos: CGdiObject -> CBitmap, CBrush, CFont, CPalette, CPen Controles Graficos: CDockState, CImageList

Soporte de Sistema:
Menus: CMenu Excepciones: CException Sincronizacion: CSyncObject Conexin a bases de datos: CDatabase, CRecordset Objetos de acceso a datos: CDaoDatabase, CDaoQueryDef Programacion de redes: CAsynSocket Servicios de Internet: CInternetSEssion, CFileFind

Clases de la arquitectura de una aplicacin

Colecciones: CArray, CList, CMap, etc Clases no derivadas de CObject:


API para servidor internet Modelo de objeto y seriacion Tipos de datos varios Estructuras Clases de soporte Plantillas de colecciones Soporte OLE Sincronizacion
7

Notacin Hngara

Convenios para nombrar las variables Consiste en hacer que el nombre de una variable empiece con una o ms letras minsculas que indiquen el tipo de dato Por ejemplo m_pszAppName se trata de un dato miembro de una clase, definido como puntero a una cadena de caracteres terminada con el carcter nulo. c:char, by:byte,n:short,i:int, b:bool, w:word, l:long, dw:DWord, fn:funcin, s:cadena de caracteres, a:array, p:puntero, h:handle, m_:miembro de una clase, C:clase, ID:identificador
8

Arquitectura de una aplicacin


La biblioteca MFC permite construir aplicac. SDI y MDI Una SDI permite tener abierta una ventana marco con su vista, para presentar el documento que tiene abierto, que es nico por cada ejemplar activo. Una MDI permite tener abiertas varias ventanas marco dentro de la ventana principal. O sea tiene una ventana marco principal dentro de la cual pueden abrirse varias ventanas marco hijas, de las cuales solo una estar activa. Ninguna de ellas tiene la barra de men Un nico objeto Aplicacin gestiona una o ms plantillas de documento. Cada plantilla crea y gestiona uno o ms documentos (SDI o MDI). El usuario ve y manipula un documento a travs de la vista contenida dentro de la ventana marco
9

Anlisis de una aplicacin


Objeto Aplicacin (CWinApp): iniciar, ejecutar y finalizar la aplicacin Objeto Plantilla de Doc (CDocTemplate): conecta un objeto documento con sus vistas asociadas y con las ventanas marcos Objeto Documento (CDocument): almacena los datos de la aplicacin Archivo Abrir, Archivo Cerrar Objeto Ventana Marco (CFrameWnd): proporcionan a las vistas, los controles estndar de una ventana, o sea el marco, la barra de ttulo, men de control, barra maximizar, etc. Objeto Vista (CView): la ventana que hace de interfaz entre el usuario y los datos del documento.

10

La Clase Aplicacin

En nuestro ejemplo CSaludoApp est en saludo.h Class CSaludo: public CWinApp { public: CSaludoApp( ); virtual BOOL InitInstance( ); //... afx_msg void OnAppAbout( ); } Funcin virtual: se espera sobreescribirla
11

La clase Ventana Marco

class CMainFrame : public CFrameWnd { protected: CMainFrame( ); DECLARE_DYNCREATE(CMainFrame) CStatusBar m_wndStatusBar; CToolBar m_wndToolBar; } Hereda la funcionalidad para procesar cualquier mensaje Windows al manipular la ventana. Por ejemplo, modificar su tamao, maximizarla, moverla Con DECLARE_DYNCREATE se puede crear objetos dinmicamente

12

La clase Documento

class CSaludoDoc: public CDocument


{ protected: CSaludoDoc( ); DECLARE_DYNCREATE(CSaludoDoc) char *m_Mensaje; //operations public: char *GetMensaje( ) {return m_Mensaje;} }

Cuando se quiere aadir un nuevo dato, se aade un dato miembro a la clase. (Ej. m_Mensaje) Hay 2 funciones que se redefinen: OnNewDocument y Serialize. (Abrir Nuevo y cuando es cargado o guardado)
13

La clase Vista

Class CSaludoView: public CView { protected: CSaludoView( ); DECLARE_DYNCREATE(CSaludoView) public: CSaludoDoc *GetDocument( ); //overrides public: virtual void OnDraw(CDC * pDC); virtual BOOL PreCreateWindow( ); //... DECLARE_MESSAGE_MAP( ) } Cuando ocurre un evento, hay que redibujar la vista (OnDraw). Tenemos un puntero al documento de la vista que despus usa para llamar a la funcin GetMensaje
14

Labor del programador al escribir sobre la clase Vista


Implementar una plantilla de visualizacin para los datos del documento: Editor de Dilogos Redefinir la funcin OnDraw para que dibuje los datos del documento Conectar los objetos de la interfaz del usuario (botones, cajas) con los mensajes Windows: ClassWizard Escribir las funciones miembro para manipular los mensajes a los que nos hemos referido

15

Jerarquas de las Ventanas


Cada ventana tiene una ventana padre, y cero o ms ventanas hermanas (siblings) La raz de las ventanas es el Escritorio Una ventana de nivel superior no tiene padre o su padre es el Escritorio Una ventana padre de una hija (Child) es una ventana de nivel superior en jerarqua. Ej. un botn es ventana hija de la ventana dilogo. Una vista es ventana hija de la ventana marco Una ventana puede tener un propietario. Ej. la ventana principal es propietaria de la ventana de Dilogo. La ventana padre de ambas es el Escritorio (son hermanas) Una ventana propiedad de otra aparece siempre encima de su propietaria y desaparece si su propietaria es minimizada
16

Aplicaciones

Conversin de Temperaturas: Conver


Saber en cual caja texto hemos ingresado nuevo valor Clic del botn principal Aceptar Enfocar un objeto al iniciar la ejecucin Visualizar Fecha y hora Botones de pulsacin: +1

17

Aplicaciones

Diseo de una Calculadora: Calcu


Crear la interfaz y colocar sus propiedades Dgitos 0..9: concatenar los nmeros Foco inicial y valor de pantalla inicial y corregir 0. Inicial Punto Decimal: definicin de variable, inicializacin y cdigo OnPuntod Declarar m_cOperador para recordar la operacin, m_Operando1 para el primer nmero Definicin de funcin OnOperador Operacin del Tanto por ciento La Tecla C de borrado total o iniciar la calculadora OnIniciar La Tecla CE de borrar el ltimo dato: OnBorrarEntrada Caso especial del signo Menos al inicio: modificar OnOperacion Fuente para las letras de la caja de texto IDC_Pantalla Color al fondo de la IDC_Pantalla: OnCtlColor 18

Aplicaciones

Crear controles durante la ejecucin: Controles


Crear los objetos y establecer sus propiedades; el boton IDC_TANTOPC67 se oculta en InitialUpdate Funcin miembro OnTantoPC Cuando ingresamos una cantidad mayor a 100000000 se crea el botn de 54% y se visualiza el de 67%: Se define *m_pTantopc54 en CControlesView y Se inicializa en el constructor Se define en Resource.h el ID del botn de 54%, en el mapa de mensajes Implementar OnChangeCantidad en respuesta el evento Change Cambiar lo que falta en OnChangeCantidad para visualizar el botn del 67%
19