Compartilhar via


Macro DialogBoxIndirectA (winuser.h)

Cria uma caixa de diálogo modal de um modelo de caixa de diálogo na memória. DialogBoxIndirect não retorna o controle até que a função de retorno de chamada especificada encerre a caixa de diálogo modal chamando a função EndDialog.

dialogBoxIndirect é implementado como uma chamada para a função dialogBoxIndirectParam .

Sintaxe

void DialogBoxIndirectA(
  [in, optional]  hInstance,
  [in]            lpTemplate,
  [in, optional]  hWndParent,
  [in, optional]  lpDialogFunc
);

Parâmetros

[in, optional] hInstance

Tipo: HINSTANCE

Um identificador para o módulo que cria a caixa de diálogo.

[in] lpTemplate

Tipo: LPCDLGTEMPLATE

O modelo que DialogBoxIndirect usa para criar a caixa de diálogo. Um modelo de caixa de diálogo consiste em um cabeçalho que descreve a caixa de diálogo, seguido por um ou mais blocos adicionais de dados que descrevem cada um dos controles na caixa de diálogo. O modelo pode usar o formato padrão ou o formato estendido.

Em um modelo padrão para uma caixa de diálogo, o cabeçalho é uma estrutura DLGTEMPLATE seguida por matrizes de comprimento variável adicionais. Os dados de cada controle consistem em uma estrutura de DLGITEMTEMPLATE seguida por matrizes de comprimento variável adicionais.

Em um modelo estendido para uma caixa de diálogo, o cabeçalho usa o formato DLGTEMPLATEEX e as definições de controle usam o formato DLGITEMTEMPLATEEX .

[in, optional] hWndParent

Tipo: HWND

Um identificador para a janela que possui a caixa de diálogo.

[in, optional] lpDialogFunc

Tipo: DLGPROC

Um ponteiro para o procedimento da caixa de diálogo. Para obter mais informações sobre o procedimento da caixa de diálogo, consulte DialogProc.

Valor de retorno

Nenhum

Observações

A macro DialogBoxIndirect usa a função CreateWindowEx para criar a caixa de diálogo. DialogBoxIndirect envia uma mensagem WM_INITDIALOG para o procedimento da caixa de diálogo. Se o modelo especificar o estilo DS_SETFONT ou DS_SHELLFONT, a função também enviará uma mensagem de WM_SETFONT para o procedimento da caixa de diálogo. A função exibe a caixa de diálogo (independentemente de o modelo especificar o estilo WS_VISIBLE), desabilitar a janela do proprietário e iniciar seu próprio loop de mensagem para recuperar e expedir mensagens para a caixa de diálogo.

Quando o procedimento da caixa de diálogo chama a função EndDialog, DialogBoxIndirect destrói a caixa de diálogo, encerra o loop de mensagem, habilita a janela do proprietário (se habilitada anteriormente) e retorna o parâmetro nResult especificado pelo procedimento da caixa de diálogo quando ele chamou EndDialog.

Em um modelo de caixa de diálogo padrão, a estrutura de DLGTEMPLATE e cada uma das estruturas de DLGITEMTEMPLATE devem ser alinhadas em limites de DWORD. A matriz de dados de criação que segue uma estrutura de DLGITEMTEMPLATE também deve ser alinhada em um limite DWORD. Todas as outras matrizes de comprimento variável no modelo devem ser alinhadas em limites WORD.

Em um modelo de caixa de diálogo estendida, o cabeçalho DLGTEMPLATEEX e cada uma das definições de controle de DLGITEMTEMPLATEEX devem ser alinhadas em limites de DWORD . A matriz de dados de criação, se houver, que segue uma estrutura de DLGITEMTEMPLATEEX também deve ser alinhada em um limite DWORD. Todas as outras matrizes de comprimento variável no modelo devem ser alinhadas em limites WORD.

Todas as cadeias de caracteres no modelo da caixa de diálogo, como títulos para a caixa de diálogo e botões, devem ser cadeias de caracteres Unicode. Use a função MultiByteToWideChar para gerar cadeias de caracteres Unicode de cadeias de caracteres ANSI.

Exemplos

Para obter um exemplo, consulte Criando um modelo node memória.

Nota

O cabeçalho winuser.h define DialogBoxIndirect 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

Consulte também

Conceitual

CreateWindowEx

DLGITEMTEMPLATE

DLGITEMTEMPLATEEX

DLGTEMPLATE

DLGTEMPLATEEX

Caixas de diálogo

caixa de diálogo

dialogBoxIndirectParam

dialogBoxParam

DialogProc

enddialog

MultiByteToWideChar

outros recursos

de referência de

WM_INITDIALOG

WM_SETFONT