Das Standardverhalten ändern


Wie wir schon beim Zeichnen gesehen haben, bekommt unser Control seine Nachrichten. Diese fangen wir entweder ab oder leiten Sie mit

Result := CallWindowProc(OldWndProc, hEdit, uMsg, wParam, lParam);

an das System weiter und lassen den Standardcode ausführen. In diesem Kapitel soll nun demonstriert werden, wie man nur bestimmte Zeichen zulässt. Um das zu erreichen, bearbeiten wir die Nachricht "WM_CHAR". Das PSDK sagt (frei übersetzt) dazu:

 Platform SDK 

Die Nachricht WM_CHAR wird an das Fenster mit dem Tastaturfokus gesendet, wenn eine WM_KEYDOWN-Nachricht von "TranslateMessage" bearbeitet wurde. Die Nachricht WM_CHAR enthält im wParam den Wert Code der gedrückten Taste.

Wir machen also nichts anderes, als alle von uns gewünschten Zeichen an die Standard-Fensterprozedur weiterzuleiten. Nach dem Motto: "Soll sich doch Windows darum kümmern, wie die Zeichen ins Editfeld kommen." Alle anderen Zeichen fallen unter den Tisch, da wir sie überhaupt nicht berücksichtigen:

WM_CHAR:
  case Byte(wParam) of
    Byte('0')..Byte('9'),
    Byte(','),
    VK_DELETE,
    VK_BACK:
      CallWindowProc(OldWndProc, hEdit, uMsg, wParam, lParam);
  end;

Es ist also recht einfach.