Mausklick abfangen

sTEk

Erfahrenes Mitglied
Hallo!
Ich habe mal wieder ein kleines Problemchen...
...ich habe einen Start-Button und dieser wird nach dem Klick auf diesen deaktiviert
Code:
GetDlgItem(IDC_Start)->EnableWindow(FALSE);
und nach Ablauf der gewünschten "Start-Funktion" (Start einer externen Messung) wieder aktiviert.

Wenn ich jedoch auf den deaktivierten Button klicke "merkt" sich das Programm/Windows jedoch den Klick und ruft nach abgeschlossener "Start-Funktion" diese sofort wieder auf. Das ist jedoch sehr schlecht, denn die Messung muss immer erst vorbereitet werden und der erneute Start aktiviert die Messaparatur viel zu zeitg.

Wie kann ich Mausklicks über dem deaktivierten Button abfangen und killen?
 
Frage: Wenn du die Messung durchführst, klemmt das Programm dann innerhalb dieser Funktion? Sprich, die MessagePump wird nicht am laufen gehalten?

Dann solltest du evtl. die Messungsfunktion in einen Thread packen. Dann bekommt Windows die Mausklicks auf den deaktivierten Button sofort mit statt dass sich die Nachrichten ansammeln.

Alternativ kannst du natürlich innerhalb der Messungs-Funktion die Nachrichtenpumpe selber am laufen halten (PeekMessage/GetMessage,Translate..,Dispatch...)
 
Ja, ich bleibe innerhalb dieser Funktion...kenne leider bisher keine andere Möglichkeit. :/
Wie erstelle ich einen Tread bzw. was ist da so besonderes dran?

Die Befehle der Nachrichtenpumpe werd ich abend mal ausprobieren - Danke erst mal! :)
 
Bei einem Thread hast du dann nicht nur einen "Programm-Zeiger" der sich durch deinen Code arbeitet, sondern pro Thread einen weiteren.
Das kann zu einigen Probleme führen, hat aber auch dicke Vorteile, weil die beiden fast völlig unabhängig voneinander laufen. Während also dein Mess-Code die Messung durchführt, kümmert sich der andere darum, dass dein Programm weiterhin auf Mausklicks usw. reagiert.

Es ist aber fast immer einfacher, wenn man ohne zusätzlichen Thread auskommt, deshalb würde ich dir das auch ohne Thread empfehlen.
 
Zurück