Article View: de.comp.lang.c++
Article #527Re: Abbruchdialog BC++ f. Windows
From: Karl-Heinz Krause
Date: Thu, 05 Oct 1995 17:04
Date: Thu, 05 Oct 1995 17:04
58 lines
2555 bytes
2555 bytes
Am 4. Okt. 1995 schrieb Paul Kaluza (kaluza@eeaas1.tuwien.ac.at):
>Hallo!
>Wer kann helfen?
>Wie koennen bei einem nicht-modalen Dialog
>die Mauseingaben abgefragt werden, wenn
>ein Rechenvorgang ausgefuehrt wird?
>(Beispiel: Compilierungsdialog BC -
>Abfrage der ABBRUCH-Taste waehrend der
>Compilierung).
Man muß dafür sorgen, daß regelmäßig GetMessage oder PeekMessage
aufgerufen wird, um die Mausbotschaften abzuholen. Wie das genau
geschieht, hängt einmal davon ab, welche Windows-Verson benutzt wird,
und einmal davon, wie der Rechenvorgang gestartet wird. Erfolgt der
Start durch einen Prozeduraufruf oder läuft die Berechnung in einem
eigenen Programm, das mit WinExec o. ä. gestartet wird?
1. Windows95 oder Windows NT
1.1. Rechenvorgang in eigenem Programm
In diesem Fall muß, wegen des preemptiven Multitaskings, nichts
weiter unternommen werden.
1.2. Rechenvorgang in einer Prozedur
In diesem Fall reicht es aus, die Berechnung in einem eigenen Thread
laufen zu lassen.
2. Windows 3.x
2.1. Rechenvorgang in eigenem Programm
In diesem Fall wäre es günstig, wenn das Programm in einer eigenen
virtuellen Maschine läuft, da in diesem Fall auch Windows 3.x pre-
emptives Multitasking macht. Da Windows aber nur für DOS-Programme
eine neue VM startet, sollte man das Rechenprogramm mit dem DOS-
Power-Pack als Protected-Mode-DOS-Anwendung schreiben.
2.2. Rechenvorgang in einer Prozedur
In diesem Fall bleibt einem leider nichts anderes übrig, als in der
Berechnungsprozedur regelmäßige Aufrufe von PeekMessage vorzusehen
und evtl. ankommende Botschaften zu bearbeiten. Ein Compiler z. B.
könnte so geschrieben werden, daß er jeweils am Zeilenende auf ein-
kommende Botschaften prüft:
if ( (c = getchar()) == '\n' ) {
if (PeekMessage (&msg, 0, 0, 0, PM_REMOVE)) {
TranslateMessage (&msg);
DispatchMessage (&msg);
}
}
So ähnlich müßte die Berechnungsprozedur auch vorgehen.
Karl-Heinz Krause
Technical Details
Message-ID:
<451372$eqd@news00.btx.dtag.de>Path:
arc1-ca.pugleaf.net!news00.btx.dtag.de!not-for-mailReferences:
<44udo2$4ig@news.tuwien.ac.at>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news00.btx.dtag.de!not-for-mail From: Krause@btx.dtag.de (Karl-Heinz Krause) Newsgroups: de.comp.lang.c++ Subject: Re: Abbruchdialog BC++ f. Windows Date: 5 Oct 1995 17:04:34 GMT Organization: Telekom Online Internet Gateway Message-ID: <451372$eqd@news00.btx.dtag.de> References: <44udo2$4ig@news.tuwien.ac.at> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Sender: 0913148778-0001@btx.dtag.de (Karl-Heinz Krause) X-Newsreader: Forte Free Agent 1.0.82