A macro CreateDialogIndirect cria uma caixa de diálogo sem janela restrita de um modelo de caixa de diálogo na memória. A macro CreateDialogIndirect usa a função CreateDialogIndirectParam.
(HWND CreateDialogIndirect HINSTANCE hInstance, / / identificador de instância de aplicativoLPCDLGTEMPLATElpTemplate, / / ponteiro para caixa de diálogo caixa modeloHWNDhWndParent, / / identificador para janela de proprietárioDLGPROClpDialogFunc / / ponteiro para caixa de diálogo caixa procedimento);
Em um modelo padrão, o cabeçalho é um DLGTEMPLATE estrutura seguida adicionais matrizes variable-length. Os dados para cada controle consistem de uma DLGITEMTEMPLATE estrutura seguida adicionais matrizes variable-length.
Em um modelo de caixa de diálogo estendida, o cabeçalho usa o formato DLGTEMPLATEEX e as definições de controle usam o formato DLGITEMTEMPLATEEX.
Depois de CreateDialogIndirect retorna, você pode liberar o modelo, que só é usado para obter a caixa de diálogo iniciada.
Se a função for bem-sucedido, o valor de retorno é o identificador de janela para a caixa de diálogo.
Se a função falhar, o valor de retorno é NULL. Para informações de erro estendidas get, chamar GetLastError.
A CreateDialogIndirect macro usa o CreateWindowEx função para criar a caixa de diálogo. CreateDialogIndirect , em seguida, envia uma mensagem WM_INITDIALOG para o procedimento de caixa de diálogo. Se o modelo especifica o estilo DS_SETFONT, a função também envia uma mensagem WM_SETFONT para o procedimento caixa de diálogo. A função exibe a caixa de diálogo se o modelo especifica o estilo WS_VISIBLE. Finalmente, CreateDialogIndirect retorna o identificador de janela para a caixa de diálogo.
Depois de CreateDialogIndirect retorna, você pode usar a função ShowWindow para exibir a caixa de diálogo (se ainda não estiver visível). Para destruir a caixa de diálogo, use o DestroyWindow função.
Em um padrão modelo caixa diálogo, a DLGTEMPLATE estrutura e cada um da DLGITEMTEMPLATE estruturas devem ser alinhados no DWORD os limites. A matriz dados de criação que segue um DLGITEMTEMPLATE estrutura também deve ser alinhada em um DWORD limite. Todas as outras matrizes de comprimento variável no modelo devem devem ser alinhadas no WORD os limites.
Em um modelo de caixa de diálogo estendida, o cabeçalho DLGTEMPLATEEX e cada uma das definições de controle DLGITEMTEMPLATEEX devem ser alinhados no DWORD os limites. A matriz de dados de criação, se qualquer, que segue uma estrutura DLGITEMTEMPLATEEX também deve ser alinhada em um DWORD limite. Todas as outras matrizes de comprimento variável no modelo devem ser alinhadas no WORD os limites.
Todas as seqüências de caracteres no modelo de caixa de diálogo, tais como títulos para a caixa de diálogo e botões, devem ser seqüências de caracteres Unicode. Para criar código que funciona em Windows e Windows NT, use o MultiByteToWideChar função para gerar esses seqüências Unicode.
Windows 95 e posterior:O sistema pode oferecer suporte a um máximo de 255 controles por modelo caixa diálogo. Para colocar mais de 255 controles em uma caixa de diálogo, crie os controles no manipulador de mensagem WM_INITDIALOG em vez de colocá-los no modelo.
Windows CE: Nem todos os estilos são suportados na DLGTEMPLATE estrutura no modelo de diálogo referida pelo parâmetro lpTemplate .
nbsp; Windows &NT: requer a versão 3.1 ou posterior.
Windows:Requer o Windows 95 ou posterior.
Windows CE:Requer versão 1.0 ou posterior.
Cabeçalho:Declarado em WinUser. h.
Biblioteca de importação:Use user32.lib.
Unicode:Implementado como versões Unicode e ANSI no Windows NT.
Visão geral de caixas de diálogo, funções de caixa de diálogo, CreateDialog, CreateDialogIndirectParam, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, MultiByteToWideChar, ShowWindow, WM_INITDIALOG, WM_SETFONT