Una aplicación básica con MFC.
La librería MFC es un conjunto de tipos de datos, funciones,clases y constantes usadas para crear aplicaciones para Microsoft Windows.
Clase CWinApp. Iniciando una aplicación con MFC.
Lo primero que hay que hacer para empezar un programa es crear una aplicación. En Win32, una aplicación se crea con una llamada a la función WinMain() y crear una estructura WNDCLASS o WNDCLASSEX .
En MFC, lo asume una clase llamada CWinApp(Class-For-A-WIndows-Application).
Para crear una aplicación, tenemos que derivar nuestra propia clase CWinApp.(N.T. Esta clase tiene funciones abstractas por lo que no se puede instanciar).
Una aplicación es algo vacío que sólo permite que el sistema operativo sepa que se va a crear un programa para ejecutar en el ordenador. Pero el programa no hace nada.
El método InitApplication.
Si buscamos hacer algo con nuestro programa, la clase CWinApp, provee el método InitApplication() que tenemos que escribir en nuestra clase.
InitApplication() es un metodo Booleano. Si se crea correctamente, la aplicación retorna TRUE. Si algo salió mal al intentar crear la aplicación, se devolverá FALSE. El esqueleto mínimo de una aplicación es algo parecido a esto:
class CExerciseApp : public CWinAppCreando el objeto aplicación de la clase CWinApp.
{
public:
virtual BOOL InitInstance();
};
BOOL CExerciseApp::InitInstance()
{
return TRUE;
}
Despues de implementar la aplicacion, para poder utilizarla, hay que crear el objeto de la clase. Es costumbre llamarla "theApp" pero se puede llamar de cualquier forma que queramos.
Incluyendo afxwin.hCExerciseApp theApp;
Las clases fundamentales de MFC son declaradas en el fichero afxwin.h. Por lo que, esta es la cabecera primaria que tenemos que añadir a cada una de nuestras aplicaciones.
Una aplicacion básica que no hace nada,puede ser creada como sigue:
#include <afxwin.h>
class CExerciseApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
BOOL CExerciseApp::InitInstance()
{
return TRUE;
}
CExerciseApp theApp;
Introduccion a los marcos(frames).
Como su nombre indica, un marco de una ventana incluye la localización, y las dimensiones de la ventana.
Hay dos tipos de aplicaciones MFC: Las que usan un marco y aquellas que no lo usan.
Una aplicación marco-basada usa el concepto conocido como arquitectura Documento/Vista. Esto permite al marco servir de espacio reservado para otras partes de la aplicación (como el docuemento y la vista).
El marco CFrameWnd
Para crear un marco, la librería MFC provee varias clases. Una de estas es CFrameWnd y es la clase de marco MFC mas comunmente usada. Si deseamos un marco, podemos derivar nuestra propia clase de CFrameWnd de esta forma:
class CMainFrame : public CFrameWnd
{
};
Como puede haber varios marcos o varios tipos de marcos en la aplicación, el primero o marco principal se llama normalmente CMainFrame, podemos seguir este esquema o llamar a la clase como queramos.
Viendo el marco de la ventana.
El esqueleto de nuestro marco solo sirve como cimiento de nuestra clase. Queremos crear un marco de ventana que muestre algo al usuario. Para crear un marco de ventana, la clase CFrameWnd provee el método Create(). Su sintaxis es:
BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName,
DWORD dwStyle = WS_OVERLAPPEDWINDOW,
const RECT& rect = rectDefault,
CWnd* pParentWnd = NULL, LPCTSTR lpszMenuName = NULL,
DWORD dwExStyle = 0,
CCreateContext* pContext = NULL );
Como podemos ver, los dos únicos argumentos requeridos son el nombre de la clase y el nombre de la ventana. Volveremos a ver todos estos argumentos cuando se estudien las clases de ventana con más detalles. Por el momento, un mínimo marco puede ser crado simplemente pasando el nombre de la clase com NULL y el nombre de la ventana como un string c-null. Esto es un ejemplo.
class CMainFrame : public CFrameWnd
{
public:
CMainFrame();
};
CMainFrame::CMainFrame()
{
Create(NULL, "MFC Fundamentals");
}
Para proveer de una ventana a la aplicacion, tenemos que crear un hilo(thread). Esto puede hacerse con la clase CWinThread. Para hacer esto mas facil, CWinThread esta equipada con una variable miembro publica llamada m_pMainWnd. Esta variable puede ser usada para crear un hilo para la ventana principal de la aplicación. Una de sus ventajas es que hace seguro que nuestra aplicación termina suavemente cuando el usuario decide cerrarla.(N.T. ????).
CWinThread es la clase base de CWinApp y por lo tanto hace m_pMainWnd visible a cualquier clase CWinThread derivada como CFrameWnd. Basandonos en esto, para crearun hilo para visualizar la ventana principal, podemos asignar un puntero de nuestra clase cuadro a m_pMainWnd. Despues de este asignamiento, m_pMainWnd puede ser usado como un objeto ventana para visualizar el cuadro, que se hace habitualmente con el método ShowWindow() . El programa nos queda de esta manera:
BOOL CExerciseApp::InitInstance()
{
m_pMainWnd = new CMainFrame;
m_pMainWnd->ShowWindow(SW_NORMAL);
return TRUE;
}
No hay comentarios:
Publicar un comentario