Um modelo caixa diálogo na memória consiste de um cabeçalho que descreve a caixa de diálogo, seguida por um ou mais blocos adicionais de dados que descrevem cada um dos controles na caixa de diálogo. O modelo pode usar o Formatarar padrão ou o formato estendido. 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.
Para distinguir entre um modelo padrão e um modelo estendido, verifique os primeiros 16-bits de um modelo de caixa de diálogo. Em um modelo estendido, a primeira palavra é 0xFFFF; qualquer outro valor indica um modelo padrão.
Se você criar um modelo de diálogo na memória, você deve garantir que cada um do controle DLGITEMTEMPLATE ou DLGITEMTEMPLATEEX definições estão alinhadas no DWORD os limites. Além disso, quaisquer dados de criação que segue uma definição de controle devem ser alinhados em um DWORD limite. Todas as outras matrizes de comprimento variável em um modelo de caixa de diálogo devem ser alinhadas no WORD os limites.
O cabeçalho do modelo
Em ambos os padrão e estendidos modelos para caixas de diálogo, o cabeçalho inclui as seguintes informações gerais:
A localização e as dimensões da caixa de diálogo
As janela e a caixa de diálogo Estilos de caixa para a caixa de diálogo
O número de controles na caixa de diálogo. Esse valor determina o número de definições de controle DLGITEMTEMPLATE ou DLGITEMTEMPLATEEX no modelo.
Um recurso de menu opcional para a caixa de diálogo. O modelo pode indicar que a caixa de diálogo não tiver um menu, ou ele pode especificar um valor ordinal ou caracteres Unicode null-terminated que identifica um recurso de menu em um arquivo executável.
A classe de janela de caixa de diálogo. Isso pode ser a classe de caixa de diálogo predefinidas, ou um valor ordinal ou caracteres Unicode null-terminated que identifica uma classe de janela registrado.
Uma seqüência de caracteres Unicode null-terminated que especifica o título para a janela de caixa de diálogo. Se a seqüência for vazia, a barra de título da caixa de diálogo está em branco. Se a caixa de diálogo não tiver o estilo WS_CAPTION, o sistema define o título para a seqüência especificada, mas não apresenta.
Se a caixa de diálogo tiver o estilo DS_SETFONT, o cabeçalho Especifica o nome de tamanho e tipo de letra do ponto da fonte a ser usado para o texto na área de cliente e controles de caixa de diálogo.
Em um modelo estendido, o cabeçalho DLGTEMPLATEEX também especifica as seguintes informações adicionais:
O identificador de contexto de ajuda que identifica a janela de caixa de diálogo quando o sistema envia um WM_HELP mensagem.
Se a caixa de diálogo com o estilo DS_SETFONT, o cabeçalho Especifica a espessura da fonte e indica se a fonte está em itálico.
As definições de controlo
Após o cabeçalho do modelo é um ou mais definições de controlo que descrevem os controles da caixa de diálogo. Em ambos os modelos padrão e estendidos, o cabeçalho da caixa de diálogo tem um membro que indica o número de controlo definições no modelo. Em um modelo padrão, cada definição de controle consiste de uma DLGITEMTEMPLATE estrutura seguida adicionais matrizes variable-length. Em um modelo estendido, as definições de controle usam o formato DLGITEMTEMPLATEEX.
Em ambos os modelos padrão e estendidos, a definição de controle inclui as seguintes informações:
A localização e as dimensões do controle.
Os estilos de janela e controle para o controle.
O identificador de controle.
A classe de janela do Controlarar. Isso pode ser o ordinal valor de uma classe de sistema predefinidos ou uma seqüência de caracteres Unicode null-terminated que especifica o nome de uma classe de janela registrado.
Uma seqüência de caracteres Unicode null-terminated que especifica o texto inicial do Controlarar ou um ordinal valor que identifica um recurso, such as um ícone em um arquivo executável.
Um bloco de comprimento variável opcional de dados de criação. Quando o sistema cria o controle, ele passa um ponteiro para dados na lParam parâmetro da mensagem WM_CREATE que ele envia para o controle.
Em um modelo estendido, a definição de Controlarar também especifica um identificador de contexto de ajuda que identifica o controle quando o sistema envia um WM_HELP mensagem.