Caixas de diálogo sem janela restrita

Uma caixa de diálogo sem janela restrita deve ser uma janela pop-up com um menu de sistema, uma barra de título e uma borda fina; ou seja, o modelo de caixa de diálogo deve especificar os estilos WS_POPUP, WS_CAPTION, WS_BORDER e WS_SYSMENU. O sistema faz não automaticamente exibir a caixa de diálogo, a menos que o modelo especifica o estilo WS_VISIBLE.

Um aplicativo cria uma caixa de diálogo sem janela restrita usando a função CreateDialog ou CreateDialogIndirect . CreateDialog requer o nome ou identificador de um recurso que contém um modelo caixa diálogo; CreateDialogIndirect requer o identificador de um objeto de memória que contém um modelo caixa diálogo. Duas outras funções, CreateDialogParam e CreateDialogIndirectParam, também criar caixas de diálogo sem janela restrita; eles passam um parâmetro especificado para o procedimento caixa de diálogo quando a caixa diálogo é criada.

Outras funções de criação e CreateDialog retornam um identificador de janela para a caixa de diálogo. O aplicativo e o procedimento de caixa de diálogo podem usar este identificador para gerenciar a caixa de diálogo. Por exemplo, se WS_VISIBLE não é especificado no modelo de caixa de diálogo, o aplicativo pode exibir a caixa de diálogo, passando o identificador de janela para a ShowWindow função.

Uma caixa de diálogo sem janela restrita não desativa a janela proprietário nem envia mensagens a ele. Ao criar a caixa de diálogo, o sistema torna a janela ativa, mas o usuário ou o aplicativo pode alterar a janela ativa a qualquer momento. Se a caixa de diálogo tornam-se inativos, ele permanece acima da janela de proprietário na ordem Z, mesmo se a janela do proprietário ativa.

O aplicativo é responsável por recuperar e distribuir mensagens de entrada para a caixa de diálogo. A maioria dos aplicativos usam o loop de mensagem principal para isso. Para permitir que o usuário mover para e selecione controles usando o teclado, no entanto, o aplicativo deve chamar o IsDialogMessage função. Para obter mais informações sobre esta função, consulte Interface de teclado de caixa de diálogo.

Uma caixa de diálogo sem janela restrita não pode retornar um valor para o aplicativo como uma caixa de diálogo modal faz, mas o procedimento de caixa de diálogo pode enviar informações para a janela do proprietário, usando a função SendMessage.

Um aplicativo deve destruir todas as caixas de diálogo sem janela restrita antes de encerrar. Ele pode destruir uma caixa de diálogo sem janela restrita usando o DestroyWindow função. Na maioria dos casos, o procedimento de caixa de diálogo chama DestroyWindow em resposta a entrada do usuário, tais como escolhendo o botão ' Cancelar '. Se o usuário nunca fecha a caixa de diálogo, desta forma, o aplicativo deve chamar DestroyWindow.

DestroyWindow invalida o identificador de janela para a caixa de diálogo, para que todas as chamadas subseqüentes para funções que usam o identificador retornam valores de erro. Para evitar erros, o procedimento caixa diálogo deve notificar o proprietário que a caixa de diálogo foi destruída. Muitos aplicativos mantém uma variável global que contém o identificador para a caixa de diálogo. Quando o procedimento caixa de diálogo destrói a caixa de diálogo, ele também define a variável global para NULL, indicando que a caixa de diálogo já não é válida.

O procedimento de caixa de diálogo deve não chamar o EndDialog função para destruir uma caixa de diálogo sem janela restrita.

Index