Sistemas operativos modernos
#include <windows.h> int WINAPI WinMa¡n(HINSTANCE h, HINSTANCE, hprev, char *szCmd, int iCmdShow) { W ND C LA SS wndciass; MSG msg: HWND hwnd; /* objeto de clase para esta ventana V /* aquí se ponen los mensajes que llegan */ /* identificador (apuntador) al objeto ventana V } /* asigna valores iniciales a wndciass */ wndclass.lpfnWndProc = WndProc; /* indica cuál procedimiento invocar */ wndclass.IpszClassName = "Program name"; /* texto para barra de título V wndclass.hicon = Loadlcon(NULL, ID I_APPLICATION); /* carga el icono del programa */ wndclass.hCursor = LoadCursor(NULL, IDC_ARROW ); /* carga el cursor del ratón */ RegisterClass(&wndclass): /* informa a Windows sobre wndciass */ hwnd = CreateWindow (... ) /* asigna memoria para la ventana V ShowWindow(hwnd, iCmdShow); /’ muestra la ventana en la pantalla */ UpdateWindow(hwnd); /* indica a la ventana que se dibuje */ while (GetMessage(&msg, NULL, O, 0)) { /* obtiene el mensaje de la cola */ Translatel\/lessage(&msg); /* traduce ei mensaje */ DispatchMessage(&msg); /* envía el mensaje al procedimiento apropiado */ } return(msg.wParam); long CA L LBA C K WndProc(HWND hwnd, UINT message, UINT wParam, long IParam) { r Aquí van las declaraciones */ switch (message) { case WM_CREATE: ...; return... case WM_PAINT: ...; return.., case WM_DESTROY: ...; return ... } return(DefWindowProc(hwnd, message, wParam, IParam));/* predeterminado V /* crea la ventana V r redibuja el contenido de la ventana */ /* destruye la ventana */ Figura 5-41. Esqueleto de un programa principal de Windows. ra el paso de parámetros, y no nos ocuparemos más de ella. El primer parámetro, h, es una instancia de identificador y sirve para que el resto del sistema reconozca al programa. Hasta cierto punto, Win32 está orientado a objetos, lo que implica que el sistema contiene objetos (por ejemplo, programas, archivos y ventanas) que tienen cierto estado y fragmentos de códi go asociados, llamados métodos, que operan sobre ese estado. Se hace referencia a los objetos por medio de identificadores (handles), y en este caso h identifica al programa. El segundo pa rámetro sólo está presente por compatibilidad con versiones anteriores; ya no se usa. El tercer parámetro, szCmd, es una cadena que termina con Oy contiene la línea de comandos que ini-
RkJQdWJsaXNoZXIy MjI4NDcx