Exemplo sem janela restrita: Usa um objeto CDialog sistema autônomo uma caixa de diálogo sem janela restrita
O exemplo sem janela restrita demonstra o uso de um MFC CDialog objeto sistema autônomo uma caixa de diálogo sem janela restrita. Sem janela restrita é um aplicativo simples baseado na caixa de diálogo que gerencia uma caixa de lista na sua caixa de diálogo principal enquanto fornece uma caixa de diálogo sem janela restrita que lhe permite adicionar seqüências de caracteres da caixa de listagem na janela principal.
Observação de segurança: |
---|
Este código de exemplo é fornecido para ilustrar um conceito e não deve ser usado em aplicativos ou sites da Web, pois ele não pode ilustrar sistema autônomo práticas de codificação mais seguras.Microsoft sistema autônomo sumes nenhuma responsabilidade por danos incidentais ou conseqüenciais deve o código de exemplo ser usado para fins diferentes de sistema autônomo se destina. |
Para obter exemplos e instruções para instalá-los:
Sobre o Visual Studio Ajuda menu, clicar Exemplos.
Para obter mais informações, consulte Localizando arquivos de exemplo.
A versão mais recente e a lista completa das Exemplos está disponível online a partir de O Visual Studio 2008 Exemplos página.
Você também pode localizar exemplos no disco rígido do seu computador.Por padrão, exemplos e um arquivo Leiame são copiados para uma pasta sob \programa Files\Visual Studio 9.0\Samples\.Para edições Express do Visual Studio, todos os exemplos estão localizados online.
Criando e executando o exemplo
Para criar e executar a amostra sem janela restrita
em aberto modeless.sln solução.
Sobre o Compilação menu, clicar Compilação.
No menu Debug, clique em Start Without Debugging.
Quando a amostra é iniciado, ele apresenta uma caixa de listagem vazio.Você pode em em aberto a caixa de diálogo sem janela restrita, clicando em Adicionar.Mesmo quando o Somador sem janela restritacaixa de diálogo em aberto, você pode trazer o foco volta para a caixa de diálogo principal.The Adicionar botão na caixa de diálogo principal não disponível quando a caixa de diálogo sem janela restrita está aberta para que o usuário não pode criar mais de uma instância da caixa sem janela restrita.
CMainDlg classe gerencia um ponteiro para a caixa de diálogo sem janela restrita.Ele faz isso apenas para conveniência; uma vez criado, a caixa de diálogo sem janela restrita não exige nenhum gerenciamento adicional.Em seu aplicativo, você pode optar por oferecer as informações de caixa sem janela restrita — desse ponteiro deve fornecer acesso a objeto C++ Gerenciando a caixa de diálogo e, portanto, seria um ótimo ponto de partida.
O código para o Adicionar botão na caixa de diálogo principal cria a caixa de diálogo sem janela restrita usando o Criar função em vez de chamar DoModal. Este é o que torna a caixa sem janela restrita; o Windows trata mensagens para a caixa diferente.Quando a caixa é destruída, EndDialog não é usado; em vez disso, DestroyWindow é chamado. Porque o normalOnOk and OnCancel funções de membro de um CDialog objeto chamaria EndDialog, certifique-se de que sua caixa de diálogo sem janela restrita não chama essas funções e, em vez disso, substitui-los para chamar DestroyWindow.
Normalmente, quando você cria uma caixa caixa de diálogo modal, você destruí-lo manualmente após DoModal Retorna. Porque você não pode esperar que Criar para retornar ao exibir sua caixa de diálogo sem janela restrita, você precisa ter algum Outros mecanismo para destruir o objeto C++ associado à janela.Este exemplo utiliza um mecanismo muito simples: Ele executa delete this em PostNcDestroy — uma função que é chamada após a área que não é destinada aos clientes a caixa foi destruída.
Observe que a caixa de diálogo sem janela restrita se comunica com sua caixa de diálogo pai de duas maneiras diferentes.Primeiro, quando o usuário pressiona OK, a seqüência de caracteres no controle de edição na caixa de diálogo sem janela restrita é adicionado ao conteúdo da caixa de listagem na caixa de diálogo modal.Em segundo lugar, quando o usuário destrói a janela por qualquer meio, a caixa sem janela restrita chama o BoxDone funcionam na janela restrita.Essa função simplesmente redefine o ponteiro para a caixa caixa de diálogo modal e reativa o botão Adicionar.
Palavras-chave
Este exemplo demonstra as seguintes palavras-chave:
AfxGetApp CDC::DrawIcon CDC::GetSafeHdc; CDialog::criar; CDialog::DoModal; CDialog::OnCancel; CDialog::OnOK; CListBox::AddString; CMenu::AppendMenu; CMenu::ModifyMenu; CRect::Height; CRect::Width; CString::IsEmpty; CString::LoadString; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWnd::DestroyWindow; CWnd::DoDataExchange; CWnd::EnableWindow; CWnd::GetClientRect; CWnd::GetDlgItem; CWnd::GetWindowText; CWnd::IsIconic; CWnd::OnPaint; CWnd::OnQueryDragIcon; CWnd::OnSysCommand; CWnd::PostNcDestroy; CWnd::SendMessage; CWnd::SetActiveWindow; GetSystemMenu; GetSystemMetrics; LoadIcon
Observação: |
---|
Alguns exemplos, sistema autônomo esta, não foram modificados para refletir sistema autônomo alterações nos assistentes, bibliotecas e compilador Visual C++, mas ainda Demonstre sistema autônomo concluir a tarefa desejada. |