Os princípios de funcionamento da interface do usuário dos sistemas operacionais da família Windows são baseados no conceito de janela. A área de trabalho, barra de tarefas, listas, diálogos, botões, menus são todos janelas. Portanto, na verdade, para exibir qualquer elemento da interface, você precisa criar uma janela do Windows.
Necessário
- - compilador;
- - SDK da plataforma Windows.
Instruções
Passo 1
Registre a classe da janela a ser criada, se necessário. Faça uma chamada para as funções de API RegisterClass, RegisterClassEx ou use a funcionalidade apropriada da estrutura usada.
As funções RegisterClass e RegisterClassEx aceitam ponteiros para estruturas do tipo WNDCLASS e WNDCLASSEX, respectivamente, como seu único parâmetro. O valor de retorno do tipo ATOM pode ser usado no lugar do nome da classe ao criar uma janela. Se a chamada de função falhar, o valor de retorno será 0.
Instancie uma estrutura do tipo WNDCLASS ou WNDCLASSEX. Preencha todos os campos necessários. Em particular, os valores corretos devem ser colocados em:
- cbSize - tamanho da estrutura em bytes;
- style - um conjunto de estilos para a classe de janela;
- lpfnWndProc - ponteiro para um procedimento de janela;
- hInstance é o identificador do módulo no qual a classe da janela está registrada;
- lpszClassName é o nome simbólico da classe.
O restante dos campos pode ser escrito com valores NULL. Faça uma chamada de função para registrar a classe da janela. Verifique o resultado retornado.
Passo 2
Selecione uma classe de janela existente, se necessário. Você deve saber o nome da classe simbólica (aquele passado pelo ponteiro lpszClassName ao registrá-lo) ou o valor ATOM correspondente. A classe pode ser local no nível do aplicativo, global no nível do aplicativo (registrado com o sinalizador CS_GLOBALCLASS) ou classe de sistema. O último tipo inclui classes de janelas com os nomes: Button, ComboBox, Edit, ListBox, MDIClient, ScrollBar, Static. Classes como RichEdit20W ou SysListView32 são registradas quando as bibliotecas correspondentes são carregadas.
etapa 3
Crie uma janela do Windows. Use as funções de API CreateWindow, CreateWindowEx ou os métodos de wrapper apropriados para objetos de classe da estrutura ou biblioteca que você está usando. O protótipo da função CreateWindowEx é parecido com este:
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);
A função CreateWindow difere de CreateWindowEx somente na ausência do parâmetro dwExStyle.
Chame CreateWindow ou CreateWindowEx. Passe no parâmetro lpClassName o nome ou valor ATOM da classe de janela que você definiu na primeira ou segunda etapa. Os parâmetros x, y, nWidth, nHeight podem ser as coordenadas e tamanhos da janela que está sendo criada. O identificador da janela pai (se houver) é passado por hWndParent.
Salve e analise o valor retornado por CreateWindow ou CreateWindowEx. Em caso de sucesso, eles retornarão um identificador para a nova janela; em caso de falha, NULL.