Wo baue ich ständige while Schleife ein?



  • Hallo zusammen!

    Ich habe ein paar generellen Fragen zu Win32 Implementierung. Ich habe bisher voranging wissenschaftliche Berechnungsprogramme geschrieben und muss mich für dieses Projekt in die Windows API Welt einfinden, also entschudligt, wenn dies als sehr grundlegend erscheint.

    Ich möchte ein Programm schreiben, welches im Hintergrund abläuft. Ich brauche keine Fenster oder ähnliches, allerdings soll ein Icon in der System Leiste auftauchen. Nachdem sich das Programm initialisiert hat, läuft es in einer while Schleife in der gewisse Konditionen abgefragt werden. Tritt eine solche Kondition ein, so soll eine Funktion ausgeführt werden.

    Ich habe mich bereits durch einige Tutorials gekämpft, ich habe ein Programm implementiert, welches mir ein Icon in die Systemleiste macht. Weiterhin habe ich ein laufendes Console Programm welches die Initialisierung und die while Schleife enthält und ebenfalls funktioniert.

    Nun zu meinem Problem; die Initialisierung meines Programms funktioniert, in der ich die Klassen definiere, Datei lese und schreib Funktionen ausführe, etc.. Ich führe diese Schritte in der LRESULT CALLBACK WndProc Funktion beim ersten aktualisieren des case WM_PAINT: durch. Allerdings weiss ich nicht, wo ich meine while schleife einbauen soll, wenn ich sie direkt mit einbaue, bleibt das Programm da natürlich hängen und ich komme nicht zur Message loop.

    Sollte ich auf eine eigene Endlos Scheifel verzichten und diese in die while (GetMessage(&msg, NULL, 0, 0)) Schleife mit integrieren? Oder gibt es einen anderen Punkt, wo ich sie einbauen könnte?

    P.S. Falls es von Bedeutung ist, ich benutze Visual C++ 2008 Express, kann also nicht auf MFC zugreifen.



  • erstens bist du glaub ich im winapi forum besser aufgehoben, da du ja selbst schreibst, das du mit winapi programmieren willst. 😉

    zu deiner while schleife...

    erstell dir nen thread (stichwort CreateThread), den du durch eine bedingung oder gleich zu beginn unter WM_CREATE aufrufst.

    die funktion die du in diesem Thread aufrufst/übergibst, läuft neben der Message loop und beeinträchtig in keiner weise die anderen funktionen deines Programms. In einem Thread hält man auch für gewöhnlich solche while schleifen gefangen...



  • Danke für den Tip, funktioniert einwandfrei.

    Falls ich noch eine Frage haben sollte, werde ich direkt in das WinAPI Forum gehen.


Anmelden zum Antworten