CREAR LA VENTANA WIN32
Para crear la ventana es necesario llenar el WNDCLASS, registrarlo y finalmente crear la ventana. El WNDCLASS
-
WNDCLASS Cwnd;
-
-
hInstance = GetModuleHandle(NULL);
-
Cwnd.style = CS_OWNDC;
-
Cwnd.lpfnWndProc = (WNDPROC) WndProc;
-
Cwnd.cbClsExtra = 0;
-
Cwnd.cbWndExtra = 0;
-
Cwnd.hInstance = hInstance;
-
Cwnd.hIcon = NULL;
-
Cwnd.hCursor = LoadCursor(NULL, IDC_ARROW);
-
Cwnd.hbrBackground = NULL;
-
Cwnd.lpszMenuName = NULL;
-
Cwnd.lpszClassName = "OpenGL";
-
-
RegisterClass(&Cwnd);
-
-
hWnd=CreateWindow(
-
"OpenGL",
-
"Hola Mundo",
-
WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN
-
,100, 100,
-
VENTANA_ANCHO,
-
VENTANA_ALTO,
-
NULL,
-
NULL,
-
hInstance,
-
NULL);
La función GetModuleHandle() obtiene un identificador para la aplicación actual.
Los datos de la estructura WNDCLASS son los siguientes:
WNDCLASSS
{
UINT style : Estilo de la aplicación, en este caso se quiere un DC propio (CS_OWNDC)
WNDPROC lpfnWndProc : Manejador de mensajes
int cbClsExtra : Bytes extra para la estructura
int cbWndExtra : Bytes extra para la clase
HINSTANCE hInstance : Instancia de la aplicación que crea la ventana
HICON hIcon : Icono de la ventana, al ser NULL, windows provee el icono por defecto.
HCURSOR hCursor : Cursor usado al pasar sobre la ventana, LoadCursor(NULL,IDI_ARROW) es el icono por defecto
HBRUSH hbrBackground : Color del fondo de la ventana,debido a que todo el espacio de la ventana va a estar ocupado por la ventana, este valor se provee como NULL
LPCTSTR lpszMenuName : Nombre del recurso que identifica el menú de la aplicación, es NULL ya que no se utiliza menú.
LPCTSTR lpszClassName : Nombre de la clase que se usara al registrarla.
}
El manejador de mensajes al que hace referencia es en este caso uno muy simple:
-
LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
-
{
-
switch (uMsg)
-
{
-
case WM_CLOSE:
-
{
-
PostQuitMessage(0);
-
return 0;
-
}
-
}
-
return DefWindowProc(hWnd,uMsg,wParam,lParam);
-
}
Las entradas de esta función son:
HWND hWnd : Identificador de la ventana que recibe el mensaje
UINT uMsg : El mensaje
WPARAM wParam : Información adicional sobre el mensaje
LPARAM lParam : Información adicional sobre el mensaje
Esta función solo intercepta un mensaje, aquel que es enviado por el sistema para indicar a la aplicación que debe cerrarse (WM_CLOSE) y si es cualquier otro mensaje lo envía al DefWindowProc().
RegisterClass() registra una clase ventana, con los parámetros dados por un WNDCLASS, en este caso CWnd.
Es hora de crear una ventana a partir de la clase creada con el RegisterClass(), para esto se utiliza la función CreateWindow() cuyos parámetros son los siguientes:
HWND CreateWindow
(
LPCTSTR lpClassName : Nombre de la clase a partir de la cual se crea la ventana
LPCTSTR lpWindowName : Titulo de la ventana.
DWORD dwStyle : Estilo de la ventana, en este caso con titulo y borde (WS_OVERLAPED)
int x, : Posición x de la ventana
int y : Posición y de la ventana
int nWidth : Ancho de la ventana
int nHeight : Alto de la ventana
HWND hWndParent : Identificador de la ventana “padre”, en este caso NULL, ya que no tiene
HMENU menú : Identificador del menú de la ventana, en este caso NULL, ya que no tiene
HINSTANCE hInstance : Identificador de la aplicación poseedora de la ventana, en NT/2000/XP este valor es ignorado
LPVOID lpParam : Cadena con el parámetro a pasar al llamar el mensaje WM_CREATE. En este NULL, ya que no hay ningun parámetro a pasar
)


,
si usted cree que sus derechos de propiedad intelectual han sido vulnerados en esta pagina escriba a
Dejar un comentario