Los principios de funcionamiento de la interfaz de usuario de los sistemas operativos de la familia Windows se basan en el concepto de ventana. El escritorio, la barra de tareas, las listas, los cuadros de diálogo, los botones y los menús son todas ventanas. Por lo tanto, de hecho, para mostrar cualquier elemento de la interfaz, debe crear una ventana de Windows.
Necesario
- - compilador;
- - SDK de la plataforma de Windows.
Instrucciones
Paso 1
Registre la clase de la ventana que se creará, si es necesario. Realice una llamada a las funciones API RegisterClass, RegisterClassEx o utilice la funcionalidad adecuada del marco utilizado.
Las funciones RegisterClass y RegisterClassEx aceptan punteros a estructuras de tipo WNDCLASS y WNDCLASSEX, respectivamente, como su único parámetro. El valor de retorno de tipo ATOM se puede utilizar en lugar del nombre de la clase al crear una ventana. Si la llamada a la función falla, el valor de retorno es 0.
Cree una instancia de una estructura de tipo WNDCLASS o WNDCLASSEX. Complete todos los campos necesarios. En particular, los valores correctos deben colocarse en:
- cbSize - tamaño de la estructura en bytes;
- estilo: un conjunto de estilos para la clase de ventana;
- lpfnWndProc - puntero a un procedimiento de ventana;
- hInstance es el identificador del módulo en el que está registrada la clase de ventana;
- lpszClassName es el nombre simbólico de la clase.
El resto de los campos se pueden escribir con valores NULL. Realice una llamada de función para registrar la clase de ventana. Verifique el resultado devuelto.
Paso 2
Seleccione una clase de ventana existente si es necesario. Debe conocer el nombre de la clase simbólica (el que pasó por el puntero lpszClassName al registrarlo) o el valor ATOM correspondiente. La clase puede ser local a nivel de aplicación, global a nivel de aplicación (registrada con el indicador CS_GLOBALCLASS) o clase de sistema. El último tipo incluye clases de ventanas con los nombres: Button, ComboBox, Edit, ListBox, MDIClient, ScrollBar, Static. Las clases como RichEdit20W o SysListView32 se registran cuando se cargan las bibliotecas correspondientes.
Paso 3
Crea una ventana de Windows. Utilice las funciones de API CreateWindow, CreateWindowEx o los métodos de contenedor adecuados para los objetos de clase del marco o biblioteca que esté utilizando. El prototipo de la función CreateWindowEx tiene este aspecto:
HWND CreateWindowEx (DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);
La función CreateWindow se diferencia de CreateWindowEx solo en ausencia del parámetro dwExStyle.
Llame a CreateWindow o CreateWindowEx. Pase en el parámetro lpClassName el nombre o valor ATOM de la clase de ventana que definió en el primer o segundo paso. Los parámetros x, y, nWidth, nHeight pueden ser las coordenadas y tamaños de la ventana que se está creando. El identificador de la ventana principal (si lo hay) se pasa a través de hWndParent.
Guarde y analice el valor devuelto por CreateWindow o CreateWindowEx. En caso de éxito, devolverán un identificador a la nueva ventana; en caso de error, NULL.