Exemplo do MTMDI: Demonstra um thread de interface do usuário do MFC
O exemplo MTMDI ilustra um thread da interface usuário MFC onde eventos de interface do usuário são processados em um thread separado do thread principal do aplicativo.Esse exemplo é uma versão modificada do thread único /MDI amostra.
MTMDI não alega uma forte lógica para colocar a janela bola saltitante em uma separada thread.Um usuário não poderá detectar a diferença entre os exemplos MDI e MTMDI em um computador com processador único.Mesmo em um computador com vários processadores, o usuário não conseguiria detectar a diferença, considerando que o movimento da bola se baseia em um timer de janela.
No entanto, MTMDI ilustra técnicas para implementar um thread de interface de usuário MFC.comparar as fontes para as Exemplos MDI e MTMDI estudar a programação de sobrecarga associada ao uso de threads de interface de usuário do MFC.
A programação de sobrecarga no MTMDI deve ser um aviso que você deve ter um mercadoria motivo para usar um thread de interface do usuário para justificar o custo de programação.O tipo muito mais comum de thread no MFC é thread de trabalho, ilustrado a MTRECALC amostra.
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 MTMDI
Abra a solução MtMdi.sln.
Sobre o Compilação menu, clicar Compilação.
No menu Debug, clique em Start Without Debugging.
Você pode usar o Arquivo menu para criar novas janelas de dois tipos diferentes.Depois que as janelas são criadas, o aplicativo permitirá que você alterar os atributos de itens na janela usando comandos em um desses menus: Cor, Velocidade, Janela, and Ajuda.Observe que as janelas "Olá!" não tem umVelocidade menu.
MTMDI faz uso de seu próprio CWinThread-derivada da classe, chamada CBounceThread. CBounceThread é implementado no arquivo Mtbounce.cpp. O thread contém todos os pintura e código de tempo que a janela bola saltitante precisa para animar a bola na janela.
O aplicativo cria cada thread, exatamente sistema autônomo a janela filho MDI é criada.Isso acontece no CBounceMDIChildWnd::Create função, encontrada em Bounce.cpp. Esta função cria tanto a janela e o thread, associando a thread à janela.
Sempre que você fecha uma janela de repercussão, o segmento associado automaticamente é destruído.As janelas "Olá!" não tem um segmento de seus próprios; suas mensagens são manipuladas pelo thread principal do aplicativo.
Palavras-chave
Este exemplo demonstra as seguintes palavras-chave:
AfxGetInstanceHandle; AfxMessageBox; AfxRegisterWndClass; CBitmap::CreateCompatibleBitmap; CCmdTarget::OnCmdMsg; CCmdUI::SetCheck; CColorDialog::DoModal; CColorDialog::GetColor; CDC::BitBlt; CDC::CreateCompatibleDC; CDC::DeleteDC; CDC::DrawText; CDC::Ellipse; CDC::FillRect; CDC::GetDeviceCaps; CDC::SelectObject; CDC::SetBkColor; CDC::SetTextColor; CFrameWnd::LoadFrame; CFrameWnd::rectDefault; CGdiObject::DeleteObject; CMDIChildWnd::criar; CMenu::LoadMenu; CRect::Height; CRect::Width; CWinApp::ExitInstance; CWinApp::InitInstance; CWnd::criar; CWnd::DestroyWindow; CWnd::GetClientRect; CWnd::GetCurrentMessage; CWnd::GetDC; CWnd::GetDlgItem; CWnd::GetWindow; CWnd::Invalidate; CWnd::KillTimer; CWnd::MessageBox; CWnd::OnCreate; CWnd::OnDestroy; CWnd::OnLButtonDown; CWnd::OnPaint; CWnd::OnSize; CWnd::OnTimer; CWnd::ReleaseDC; CWnd::SendMessage; CWnd::SetTimer; CWnd::SetWindowPos; CWnd::ShowWindow; CWnd::UpdateWindow; CloseHandle; CreateEvent; CreateThread; EnumChildWindows; GetSysColor; GetVersion; LOWORD; LoadCursor; LoadIcon; LoadMenu; MAKEINTRESOURCE; RGB; SetEvent; suspensão; WaitForSingleObject; max; min
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. |