Explorer-estilo Personalizar modelos

Para definir controles adicionais para um Explorer-estilo Abrir ou Salvar como caixa de diálogo, use a estrutura OPENFILENAME para especificar um modelo para uma caixa de diálogo de filho que contém os controles adicionais. Se seu modelo de caixa de diálogo de filho é um recurso em um aplicativo ou dynamic-link library, definir o sinalizador OFN_ENABLETEMPLATE in o sinalizadores membro e use os hInstance e lpTemplateName Membros da estrutura para identificar o nome do módulo e recurso. Se o modelo já está na memória, defina o Sinalizar de OFN_ENABLETEMPLATEHANDLE e use o hInstance membro para identificar o objeto de memória que contém o modelo. Ao fornecer uma criança modelo de diálogo para uma caixa de diálogo do estilo do Explorer, você também deve definir o sinalizador OFN_EXPLORER; caso contrário, o sistema assume que você estiver fornecendo um modelo de substituição para uma caixa de diálogo estilo antigo. Normalmente, se você fornecer controles adicionais, também forneça um Explorer-estilo procedimento gancho para processar mensagens para os novos controles.

Você pode criar seu modelo de caixa de diálogo filho como faria qualquer outro modelo, exceto que você deve especificar os estilos WS_CHILD e WS_CLIPSIBLINGS e deve especificar os estilos DS_3DLOOK e DS_CONTROL. O sistema exige o estilo estilo porque seu modelo define uma caixa de diálogo do filho da caixa de diálogo padrão Abrir ou Salvar como . O estilo WS_CLIPSIBLINGS garante que a caixa de diálogo filho não pintar sobre qualquer um dos controles na caixa de diálogo padrão. O estilo DS_3DLOOK certifica-se de que a aparência dos controles na caixa de diálogo filho é consistente com os controles na caixa de diálogo padrão. O estilo DS_CONTROL certifica-se de que o usuário pode usar a guia e outras teclas de navegação para mover-se entre todos os controles, padrão ou personalizada, na caixa de diálogo personalizada.

Para liberar espaço para novos controles, o sistema expande a caixa de diálogo padrão pela largura e altura da caixa de diálogo personalizada. Por padrão, todos os controles da caixa de diálogo personalizada são posicionados abaixo os controles na caixa de diálogo padrão. No entanto, você pode substituir esse padrão de posicionamento, incluindo um controle texto estático no modelo de caixa de diálogo personalizada e atribuindo-lhe o valor de identificador de controle de stc32. (Este valor é definido da DLG.Arquivo de cabeçalho H.) Neste caso, o sistema usa o controle como o ponto de referência para determinar onde posicionar os novos controles. Todos os novos controles acima e à esquerda do controle stc32 estão posicionados a mesma quantidade acima e à esquerda dos controles na caixa de diálogo padrão. Novos controles abaixo e à direita do controle stc32 são posicionados abaixo e à direita dos controles padrão. Em geral, cada novo controle está posicionado para que ele tenha a mesma posição relativa as controles padrão como tinha para o Controlarar stc32. Para fazer o quarto para estes novos controles, o sistema adiciona espaço para a esquerda, direito, inferior e superior da caixa de diálogo padrão conforme necessário.

O sistema requer que o procedimento gancho para processar todas as mensagens para a caixa de diálogo personalizada e, portanto, envia as mesmas mensagens de janela para o procedimento gancho como para qualquer outro procedimento de caixa de diálogo. Por exemplo, o procedimento gancho recebe WM_COMMAND mensagens quando o usuário clica nos controles de botão na caixa de diálogo personalizada. O procedimento de gancho é responsável por inicializar esses controles e recuperar valores de controles quando a caixa de diálogo é fechada. Observe que, quando o procedimento gancho recebe a mensagem WM_INITDIALOG , o sistema tem não ainda movido os controles para suas posições finais.

O procedimento de caixa de diálogo padrão manipula mensagens para todos os controles na caixa de diálogo padrão, mas o procedimento gancho recebe a mensagens de notificação WM_NOTIFY para ações do usuário sobre esses controles, conforme descrito nos Procedimentos de gancho de estilo do Explorer.