Freigeben über


MTMDI-Beispiel: Veranschaulicht ein Thread MFC-Benutzeroberfläche

Das MTMDI-Beispiel veranschaulicht eine MFC-Benutzeroberflächenthread, in dem Benutzeroberflächenereignisse in einem separaten Thread aus dem Hauptanwendungsthread verarbeitet werden. In diesem Beispiel ist eine geänderte Version des Single-Thread MDI-Beispiels.

MTMDI ist eine starke Begründung für Fenster springenden Kugel in einem separaten Thread einfügen nicht behaupten. Ein Benutzer wäre nicht die Differenz zwischen den Beispielen MDI und MTMDI auf einem einzelnen Prozessor-Computer zu erkennen sein. Sogar auf einem Multiprozessorcomputer würde der Benutzer nicht den Unterschied erkennen, die Kugel Bewegung auf einem Fensterzeitgeber basiert.

Dennoch MTMDI Verfahren zum Implementieren einer MFC-Benutzeroberflächenthreads veranschaulichen. Vergleichen Sie die Quellen für die MDI- und MTMDI Beispiele studieren die Programmierung mit MFC-Benutzeroberflächenthreads Aufwand zugeordnet.

Die Programmierung Aufwand in MTMDI sollte eine Warnung, dass Sie einen guten Grund mit, dass ein Benutzeroberflächenthread Programmierung Kosten rechtfertigen haben sollten. Der wesentlich allgemeinere Threadtyp in MFC ist der Arbeitsthread im MTRECALC-Beispiel veranschaulicht.

SicherheitshinweisSicherheitshinweis

Dieser Beispielcode soll ein Konzept veranschaulichen, und es wird nur den Code, der für dieses Konzept relevant sind. Möglicherweise erfüllt dieser nicht die Sicherheitsanforderungen für eine bestimmte Umgebung, und er sollte nicht genau wie dargestellt verwendet werden. Wir empfehlen, Sicherheits- und Fehlerbehandlungscode hinzuzufügen, um Ihre Projekte sicherer und stabiler zu machen. Microsoft stellt diesen Beispielcode "Wie besehen"keine Garantien.

So erhalten Sie Beispiele und Anweisungen für deren Installation:

Um Beispiele von Visual Studio zuzugreifen

  • im Menü Hilfe Menü klicken Beispiele.

    Standardmäßig sind die Beispiele in installiert. Laufwerk: \Programme\Microsoft visual Studio 10.0\Samples\.

  • Die neueste Version dieses Beispiels und eine Liste der anderen Beispiele finden Sie unter Visual Studio Samples auf der MSDN-Website.

Erstellen und Ausführen des Beispiels

So erstellen Sie und führen das MTMDI-Beispiel

  1. Öffnen Sie die Projektmappe MtMdi.sln.

  2. erstellen Sie Menü, klicken Sie auf erstellen.

  3. Debuggen Sie auf Menü, klicken Sie auf Starten ohne Debuggen.

Im Dateimenü können Sie neue Fenster zweier unterschiedlicher Typen erstellen. Nachdem die Fenster erstellt werden, können die Anwendung die Attribute der Elemente im Fenster mithilfe der Befehle in diesen Menüs ändern: Farbe, Geschwindigkeit, Fensterund Hilfe. Beachten Sie, dass die "Hello!"Fenster haben keinen Menü Speed zur .

MTMDI verwendet eigene CWinThread-abgeleitete Klasse namens CBounceThread. CBounceThread ist in der Datei Mtbounce.cpp implementiert. Der Thread enthält alle zeichnen und Timing-Code, die Fenster springenden Ball animieren Sie die Kugel im Fenster.

Die Anwendung erstellt jeder Thread, wie das untergeordneten MDI-Fenster erstellt wird. Dies geschieht in der CBounceMDIChildWnd::Create-Funktion, die in Bounce.cpp gefunden. Diese Funktion erstellt das Fenster und dem Thread Verknüpfen des Threads zum Fenster.

Wenn Sie einen fehlerfreien Fenster schließen, wird der zugeordnete Thread automatisch zerstört. Die "Hello!"Fenster haben keinen Thread des eigenen;Ihre Nachrichten werden vom primären Thread der Anwendung behandelt.

Schlüsselwörter

Dieses Beispiel demonstriert die Verwendung der folgenden Schlüsselwörter:

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::Create; CMenu::LoadMenu; CRect::Height; CRect::Width; CWinApp::ExitInstance; CWinApp::InitInstance; CWnd::Create; 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; Sleep; WaitForSingleObject; max; min

Hinweis

Einige Beispiele, z. B. eine, wurden nicht geändert, um Änderungen in der Visual C++-Assistenten, Bibliotheken und Compiler, demonstrieren aber dennoch wie Sie die gewünschte Aufgabe durchführen.

Siehe auch

Weitere Ressourcen

MFC-Beispiele