🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #527

Re: Abbruchdialog BC++ f. Windows

#527
From: Karl-Heinz Krause
Date: Thu, 05 Oct 1995 17:04
58 lines
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-mail
References: <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