Função CreateWindowExA (winuser.h)
Cria uma janela filho, pop-up ou sobreposta com um estilo de janela estendida; caso contrário, essa função é idêntica à função CreateWindow. Para obter mais informações sobre como criar uma janela e para obter descrições completas dos outros parâmetros do CreateWindowEx, consulte CreateWindow.
Sintaxe
HWND CreateWindowExA(
[in] DWORD dwExStyle,
[in, optional] LPCSTR lpClassName,
[in, optional] LPCSTR lpWindowName,
[in] DWORD dwStyle,
[in] int X,
[in] int Y,
[in] int nWidth,
[in] int nHeight,
[in, optional] HWND hWndParent,
[in, optional] HMENU hMenu,
[in, optional] HINSTANCE hInstance,
[in, optional] LPVOID lpParam
);
Parâmetros
[in] dwExStyle
Tipo: DWORD
O estilo de janela estendida da janela que está sendo criada. Para obter uma lista de valores possíveis, consulte Estilos de Janela Estendida.
[in, optional] lpClassName
Tipo: LPCTSTR
Um cadeia de caracteresterminada ou um átomo de classe.
Se um cadeia de caracteresterminada em nulo, ele especifica o nome da classe de janela. O nome da classe pode ser qualquer nome registrado com a função RegisterClass ou RegisterClassEx, desde que o módulo que registra a classe também seja o módulo que cria a janela. O nome da classe também pode ser qualquer um dos nomes predefinidos classe do sistema.
Se um atom de classe criado por uma chamada anterior para RegisterClass ou RegisterClassEx, ele deverá ser convertido usando a macro MAKEINTATOM. (O átomo deve estar na palavra de baixa ordem de lpClassName; a palavra de alta ordem deve ser zero.)
[in, optional] lpWindowName
Tipo: LPCTSTR
O nome da janela. Se o estilo da janela especificar uma barra de título, o título da janela apontado por lpWindowName será exibido na barra de título. Ao usar CreateWindow para criar controles, como botões, caixas de seleção e controles estáticos, use lpWindowName para especificar o texto do controle. Ao criar um controle estático com o estilo SS_ICON, use lpWindowName para especificar o nome ou o identificador do ícone. Para especificar um identificador, use a sintaxe "#num".
[in] dwStyle
Tipo: DWORD
O estilo da janela que está sendo criada. Esse parâmetro pode ser uma combinação dos valores de estilo da janela , além dos estilos de controle indicados na seção Comentários.
[in] X
Tipo: int
A posição horizontal inicial da janela. Para uma janela pop-up ou sobreposta, o parâmetro x é a coordenada x inicial do canto superior esquerdo da janela, em coordenadas de tela. Para uma janela filho, x é a coordenada x do canto superior esquerdo da janela em relação ao canto superior esquerdo da área do cliente da janela pai. Se x estiver definido como CW_USEDEFAULT, o sistema selecionará a posição padrão para o canto superior esquerdo da janela e ignorará o parâmetro y. CW_USEDEFAULT é válido apenas para janelas sobrepostas; se for especificado para uma janela pop-up ou filho, os parâmetros x e y serão definidos como zero.
[in] Y
Tipo: int
A posição vertical inicial da janela. Para uma janela sobreposta ou pop-up, o parâmetro y é a coordenada y inicial do canto superior esquerdo da janela, nas coordenadas da tela. Para uma janela filho, y é a coordenada y inicial do canto superior esquerdo da janela filho em relação ao canto superior esquerdo da área do cliente da janela pai. Para uma caixa de listagem y é a coordenada y inicial do canto superior esquerdo da área do cliente da caixa de listagem em relação ao canto superior esquerdo da área do cliente da janela pai.
Se uma janela sobreposta for criada com o conjunto de bits de estilo WS_VISIBLE e o parâmetro x for definido como CW_USEDEFAULT, o parâmetro y determinará como a janela é mostrada. Se o parâmetro y for CW_USEDEFAULT, o gerenciador de janelas chamará ShowWindow com o sinalizador SW_SHOW após a criação da janela. Se o parâmetro
[in] nWidth
Tipo: int
A largura, em unidades de dispositivo, da janela. Para janelas sobrepostas, nWidth é a largura da janela, em coordenadas de tela ou CW_USEDEFAULT. Se nWidth for CW_USEDEFAULT, o sistema selecionará uma largura e altura padrão para a janela; a largura padrão se estende das coordenadas x iniciais até a borda direita da tela; a altura padrão se estende da coordenada y inicial até a parte superior da área do ícone.
[in] nHeight
Tipo: int
A altura, em unidades do dispositivo, da janela. Para janelas sobrepostas, nHeight é a altura da janela, nas coordenadas da tela. Se o parâmetro nWidth estiver definido como CW_USEDEFAULT, o sistema ignorará nHeight.
[in, optional] hWndParent
Tipo: HWND
Um identificador para a janela pai ou proprietário da janela que está sendo criada. Para criar uma janela filho ou uma janela de propriedade, forneça um identificador de janela válido. Esse parâmetro é opcional para janelas pop-up.
Para criar uma janela somente de mensagem, forneça HWND_MESSAGE ou um identificador para uma janela somente mensagem existente.
[in, optional] hMenu
Tipo: HMENU
Um identificador para um menu ou especifica um identificador de janela filho, dependendo do estilo da janela. Para uma janela sobreposta ou pop-up, hMenu identifica o menu a ser usado com a janela; ele poderá ser NULL se o menu de classe for usado. Para uma janela filho, hMenu especifica o identificador de janela filho, um valor inteiro usado por um controle de caixa de diálogo para notificar o pai sobre eventos. O aplicativo determina o identificador de janela filho; deve ser exclusivo para todas as janelas filho com a mesma janela pai.
[in, optional] hInstance
Tipo: HINSTANCE
Um identificador para a instância do módulo a ser associado à janela.
[in, optional] lpParam
Tipo: LPVOID
Ponteiro para um valor a ser passado para a janela por meio da estrutura CREATETRUCT
Se um aplicativo chamar
Valor de retorno
Tipo: HWND
Se a função for bem-sucedida, o valor retornado será um identificador para a nova janela.
Se a função falhar, o valor retornado será NULL. Para obter informações de erro estendidas, chame GetLastError.
Essa função normalmente falha por um dos seguintes motivos:
- um valor de parâmetro inválido
- a classe do sistema foi registrada por um módulo diferente
- O gancho de WH_CBT é instalado e retorna um código de falha
- se um dos controles no modelo de caixa de diálogo não estiver registrado ou o procedimento de janela falhar WM_CREATE ou WM_NCCREATE
Observações
A função CreateWindowEx envia WM_NCCREATE, WM_NCCALCSIZEe WM_CREATE mensagens para a janela que está sendo criada.
Se a janela criada for uma janela filho, sua posição padrão será na parte inferior da ordem Z. Se a janela criada for uma janela de nível superior, sua posição padrão estará na parte superior da ordem Z (mas abaixo de todas as janelas superiores, a menos que a janela criada seja a própria parte superior).
Para obter informações sobre como controlar se a Barra de Tarefas exibe um botão para a janela criada, consulte Gerenciando botões da barra de tarefas.
Para obter informações sobre como remover uma janela, consulte a função DestroyWindow.
As classes de controle predefinidas a seguir podem ser especificadas no parâmetro lpClassName. Observe os estilos de controle correspondentes que você pode usar no parâmetro
Classe | Significado |
---|---|
BUTTON |
Designa uma pequena janela filho retangular que representa um botão em que o usuário pode clicar para ativá-la ou desativá-la. Os controles de botão podem ser usados sozinhos ou em grupos e podem ser rotulados ou exibidos sem texto. Os controles de botão normalmente alteram a aparência quando o usuário clica neles. Para obter mais informações, consulte Botões.
Para obter uma tabela dos estilos de botão que você pode especificar no parâmetro |
COMBOBOX |
Designa um controle que consiste em uma caixa de listagem e um campo de seleção semelhante a um controle de edição. Ao usar esse estilo, um aplicativo deve exibir a caixa de listagem o tempo todo ou habilitar uma caixa de listagem suspensa. Se a caixa de listagem estiver visível, digitar caracteres no campo de seleção realça a primeira entrada de caixa de listagem que corresponde aos caracteres digitado. Por outro lado, selecionar um item na caixa de listagem exibe o texto selecionado no campo de seleção. Para obter mais informações, consulte Caixas de Combinação.
Para obter uma tabela dos estilos de caixa de combinação que você pode especificar no parâmetro dwStyle, consulte estilos de caixa de combinação. |
EDITar |
Designa uma janela filho retangular na qual o usuário pode digitar texto do teclado. O usuário seleciona o controle e fornece o foco do teclado clicando nele ou movendo-o pressionando a tecla TAB. O usuário pode digitar texto quando o controle de edição exibe um cursor piscando; use o mouse para mover o cursor, selecionar caracteres a serem substituídos ou posicionar o cursor para inserir caracteres; ou use a chave para excluir caracteres. Para obter mais informações, consulte Editar Controles.
Para obter uma tabela dos estilos de controle de edição que você pode especificar no parâmetro |
LISTBOX |
Designa uma lista de cadeias de caracteres. Especifique esse controle sempre que um aplicativo deve apresentar uma lista de nomes, como nomes de arquivo, dos quais o usuário pode escolher. O usuário pode selecionar uma cadeia de caracteres clicando nela. Uma cadeia de caracteres selecionada é realçada e uma mensagem de notificação é passada para a janela pai. Para obter mais informações, consulte List Boxes.
Para obter uma tabela dos estilos de caixa de listagem que você pode especificar no parâmetro dwStyle |
MDICLIENT | Designa uma janela do cliente MDI. Essa janela recebe mensagens que controlam as janelas filho do aplicativo MDI. Os bits de estilo recomendados são WS_CLIPCHILDREN e WS_CHILD. Especifique os estilos WS_HSCROLL e WS_VSCROLL para criar uma janela de cliente MDI que permite ao usuário rolar janelas filho MDI para exibição. Para obter mais informações, consulte interface de vários documentos. |
RichEdit |
Designa um controle Microsoft Rich Edit 1.0. Essa janela permite que o usuário exiba e edite texto com formatação de caractere e parágrafo e pode incluir objetos COM (Component Object Model) inseridos. Para obter mais informações, consulte rich edit controls.
Para obter uma tabela dos estilos de controle de edição avançada que você pode especificar no parâmetro dwStyle, consulte Rich Edit Control Styles. |
RICHEDIT_CLASS |
Designa um controle Microsoft Rich Edit 2.0. Esses controles permitem que o usuário exiba e edite texto com formatação de caractere e parágrafo e pode incluir objetos COM inseridos. Para obter mais informações, consulte rich edit controls.
Para obter uma tabela dos estilos de controle de edição avançada que você pode especificar no parâmetro dwStyle, consulte Rich Edit Control Styles. |
scrollbar |
Designa um retângulo que contém uma caixa de rolagem e tem setas de direção em ambas as extremidades. A barra de rolagem envia uma mensagem de notificação para sua janela pai sempre que o usuário clica no controle. A janela pai é responsável por atualizar a posição da caixa de rolagem, se necessário. Para obter mais informações, consulte Barras de Rolagem.
Para obter uma tabela dos estilos de controle da barra de rolagem que você pode especificar no parâmetro dwStyle, consulte Estilos de Controle da Barra de Rolagem. |
ESTÁTICO |
Designa um campo de texto simples, uma caixa ou um retângulo usado para rotular, caixa ou separar outros controles. Os controles estáticos não levam nenhuma entrada e não fornecem saída. Para obter mais informações, consulte controles estáticos.
Para obter uma tabela dos estilos de controle estático que você pode especificar no parâmetro |
O valor WS_EX_NOACTIVATE para dwExStyle impede a ativação em primeiro plano pelo sistema. Para impedir a ativação da fila quando o usuário clicar na janela, você deve processar a mensagem WM_MOUSEACTIVATE adequadamente. Para colocar a janela em primeiro plano ou ativá-la programaticamente, use SetForegroundWindow ou SetActiveWindow. Retornar FALSE para WM_NCACTIVATE impede que a janela perca a ativação da fila. No entanto, o valor retornado é ignorado no momento da ativação.
Com WS_EX_COMPOSITED definido, todos os descendentes de uma janela recebem ordem de pintura de baixo para cima usando buffer duplo. A ordem de pintura de baixo para cima permite que uma janela decrescente tenha efeitos de translúcibilidade (alfa) e transparência (chave de cor), mas somente se a janela decrescente também tiver o WS_EX_TRANSPARENT conjunto de bits. O buffer duplo permite que a janela e seus descendentes sejam pintados sem cintilação.
Exemplo
O código de exemplo a seguir ilustra o uso de CreateWindowExA.
BOOL Create(
PCWSTR lpWindowName,
DWORD dwStyle,
DWORD dwExStyle = 0,
int x = CW_USEDEFAULT,
int y = CW_USEDEFAULT,
int nWidth = CW_USEDEFAULT,
int nHeight = CW_USEDEFAULT,
HWND hWndParent = 0,
HMENU hMenu = 0
)
{
WNDCLASS wc = {0};
wc.lpfnWndProc = DERIVED_TYPE::WindowProc;
wc.hInstance = GetModuleHandle(NULL);
wc.lpszClassName = ClassName();
RegisterClass(&wc);
m_hwnd = CreateWindowEx(
dwExStyle, ClassName(), lpWindowName, dwStyle, x, y,
nWidth, nHeight, hWndParent, hMenu, GetModuleHandle(NULL), this
);
return (m_hwnd ? TRUE : FALSE);
}
Nota
O cabeçalho winuser.h define CreateWindowEx como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 2000 Professional [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows 2000 Server [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | winuser.h (inclua Windows.h) |
biblioteca | User32.lib |
de DLL |
User32.dll |
conjunto de API | ext-ms-win-ntuser-window-l1-1-0 (introduzido no Windows 8) |
Consulte também
sobre a interface de vários documentos
Conceitual
outros recursos
de referência de
ShowWindow