gedrückte Taste verschlucken (CEdit): wie?
-
Ich habe hier schon gesucht, aber nichts passendes gefunden.
Da CEdit direkt keinen OnKeyDown oder OnChar Event hat, habe ich eine neue Klasse NoEchoEdit abgeleitet von der Basisklasse CEdit.
Damit kann ich auch OnChar und OnKeyDown verwenden, in beiden Methoden sehe ich die gedrückte Taste.Doch wie lösche ich die gedrückte Taste, so daß sie nicht ausgegeben wird? Ich kann sie nichtmal ändern.
Das hier z.B. funktioniert nicht:void CNoEchoEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { CEdit::OnKeyDown('k', nRepCnt, nFlags); }Es wird trotzdem immer die gedrückte Taste ausgegeben, kein 'k'.
Und wenn ich CEdit::OnKeyDown garnicht aufrufe, dann wird das getippte Zeichen trotzdem angezeigt. Wie also kann ich es verschlucken?Es ist ein Terminalfenster, bei dem getippte Buchstaben nur über die serielle Schnittstelle gesendet (und nicht angezeigt) werden, angezeigt werden nur die empfangenen Zeichen.
Gruß,
Micha
-
MHX schrieb:
Doch wie lösche ich die gedrückte Taste, so daß sie nicht ausgegeben wird? Ich kann sie nichtmal ändern.
Das hier z.B. funktioniert nicht:void CNoEchoEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { CEdit::OnKeyDown('k', nRepCnt, nFlags); }Es wird trotzdem immer die gedrückte Taste ausgegeben, kein 'k'.
Und wenn ich CEdit::OnKeyDown garnicht aufrufe, dann wird das getippte Zeichen trotzdem angezeigt.MSDN schrieb:
Note This member function is called by the framework to allow your application to handle a Windows message. The parameters passed to your function reflect the parameters received by the framework when the message was received. If you call the base-class implementation of this function, that implementation will use the parameters originally passed with the message and not the parameters you supply to the function.