Wie Sie Verwendung Threading und Nachrichten in Visual C++

September 14

Prozesse, die im Hintergrund, wie jene, die von der Anwendung der Ereignisanzeige in Windows ausgeführt können von MFC-arbeiten-Thread in Visual C++ implementiert werden. In diesem Tutorial die OnOK dient der Command-Funktion eines Dialogfelds AfxBeginThread aufrufen, die wiederum eine Funktion aufruft, die Daten in einer Textdatei - Worker-Thread schreibt.

Anweisungen

1 Erstellen einer MFC-Dialogfeld in Microsoft Visual Studio. Geben sie den Namen MyGUI. Wenn Sie unsicher sind, wie Dialogfelder in Visual C++ vorgenommen werden, lesen Sie "Make MFC Dialogfelder in MFC."

2

Kopieren Sie und fügen Sie den folgenden Code in MyGUI.cpp. Dies dient als der Worker-Thread des Programms.

UINT Process(LPVOID param)

{

CFile Datei;

Datei. Offene ("C:\\... \\MyProject\\Test.txt", modeCreate | ««CFile::modeWrite);

CString StrValue;

für (Int i = 0; i{

StrValue.format("Number:%d", i);

Datei. Write (StrValue, strValue.GetLength());

}

Datei. Close();

Return TRUE;

}

3

Generieren Sie die Command-Funktion OnOK im MyGUI-Dialog die AfxBeginThread-Funktion eingefügt. Wenn unsicher wie Befehlsfunktionen in Visual C++ erstellt werden, lesen Sie den eHow-Artikel "How to Create Befehlsschaltflächen in MFC-Dialogfeldern."

Fügen Sie diesen code

AfxBeginThread (Prozess, NULL, THREAD_PRIORITY_NORMAL, 0, 0, NULL);

MessageBox ("Thread gestartet");

in dieser Funktion:

void CMyGUIDlg::OnOK()

{

Fügen Sie den Code hier

}

Beachten Sie, dass der erste Parameter der Funktion AfxBeginThread ist der Name der Funktion, die als ein Worker-Thread ausgeführt wird.

4 Erstellen und Ausführen der Anwendungdes. Klicken Sie auf OK. Dies löst die Worker-Thread. Um zu beweisen, dass er ausgeführt, finden Sie die Datei "Test.txt" unter dem Ordner "MeinProjekt" oder was auch immer Sie den Projektordner mit dem Namen. Öffnen Sie die Datei um sicherzustellen, dass Daten darauf geschrieben wurden.

Tipps & Warnungen

  • Wenn die AfxBeginThread-Funktion mehr als einmal mit derselben Funktion als ersten Parameter aufgerufen wurde, dies eine Demonstration von hätte, Multithreading.
  • Jede Funktion hat die folgende Deklaration:UINT AnyFunction(void parameters);ist ein Kandidat für einen Worker-Thread.