Events aus der Messagequeu löschen
-
Hi,
ich warte in einer Schleife auf einen Thread, der immer kurz die Ausführung unterbricht, um Messages für das Hauptfenster zu verarbeiten.
while(go_on==true) { GetApplication()->PumpWaitingMessages(); WaitForSingleObject(myThread,1000); }
Ich möchte jedoch verhindern, daß Menüs, virtuelle Tasten oder - ich weiss nicht wie sie heißen - die kleine Buttons unter den Menüs aktiviert werden können. Anders gesagt brauche ich nur die Maximierung, Minimierung und das neu-zeichnen des Hauptfensters.
Ich habs versucht mit PeekMessage und WM_PAINT, aber das hat nur den dc neu gezeichnet, nicht meine Menüs oder die Bitmaps der Buttons unter den Menüs. Außerdem kann es die Minimierung und Maximierung nicht durchführen.
DispatchMessage(&msg); geht nicht, da dabei ein Event kommen muss, was aber nicht immer der fall ist!Ich habe versucht mit folgendem die Events aus der Messagequeu zu löschen, was aber auch nicht funktioniert hat.
while(go_on==true) { while(PeekMessage(&msg, NULL, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE)){} while(PeekMessage(&msg, NULL, WM_KEYFIRST , WM_KEYLAST , PM_REMOVE)){} GetApplication()->PumpWaitingMessages(); WaitForSingleObject(myThread,1000); }
Wie muss ich es angehen?
Vielen Dank
PhilippBorland 5.02...
-
Wie wär's einfach mit Disablen der Controls, die nicht geklickt werden sollen? Das ist der übliche Weg.
PS: Geil, arbeitest du mit der OWL?
-
Glaub schon - aber jetzt nicht totlachen
Kann man auch die Menüs deaktivieren?
Wie sehen die Befehle für das Deaktivieren der Menüs und der Controls aus?Gruß
Milky
-
Milky schrieb:
Wie sehen die Befehle für das Deaktivieren der Menüs und der Controls aus?
Controls: EnableWindow().
Menu: EnableMenuItem();