Der Martin: 2x das Gleiche senden

Beitrag lesen

Hallo,

Ich programmier mir grad ein kleines Programm in C++. Unteranderem verwende ich SendMessage(hWnd, WM_CHAR, 'a', 0).

also Windows-API. Gut.

Also:
SendMessage(hWnd, WM_CHAR, 'a', 0);
SendMessage(hWnd, WM_CHAR, 'b', 0);
funktioniert, aber:
SendMessage(hWnd, WM_CHAR, 'a', 0);
SendMessage(hWnd, WM_CHAR, 'a', 0);
funktioniert nicht, es kommt nur 1x a.
Was muss ich machen, damit 2x a geschrieben wird?

Den Teil des Programms analysieren und korrigieren, der die Message verarbeitet. Denn Windows führt mehrfache SendMessage()-Aufrufe stur durch, ob sie nun jedesmal verschiedene Parameter haben oder 17mal die gleichen. Dazu kommt noch, dass SendMessage() im Gegensatz zu PostMessage() sogar wartet, bis die Botschaft verarbeitet wurde (PostMessage() stellt sie einfach nur in die Event Queue).

Das Problem muss daher in dem Teil deines Programms liegen, das die Botschaft bearbeitet. Was tut dieser Teil? Würdest du überhaupt bemerken, wenn zweimal hintereinander dieselbe Aktion ausgeführt wird? Enthält dieser Teil vielleicht eine Verriegelung, um genau solche Mehrfachaufrufe zu vermeiden?

Anhand deines Codeausschnittes kann man nämlich nur sagen: Da ist kein prinzipieller Fehler drin - abgesehen davon, dass du das Ergebnis nicht auswertest; ich weiß aber auf die Schnelle auch nicht, ob WM_CHAR ein nützliches Ergebnis liefert.

So long,
 Martin

--
Das Gehirn ist schon eine tolle Sache: Es fängt ganz von allein an zu arbeiten, wenn man morgens aufsteht, und hört erst damit auf, wenn man in der Schule ankommt.
  (alte Schülererkenntnis)