Forum: PC-Programmierung CEdit und MFC


von Karlheinz D. (kdruschel)


Lesenswert?

Hi Leuts,

ich muss bei einem CEdit Eingabefeld der MFC zur Laufzeit umschalten, ob 
nur numerische oder auch alphanumerische Eingaben zulässig sind....
Irgendwie geht es wohl, was ich diversen Beiträgen aus dem Internet 
entnehmen kann. Aber ein konkretes Beispiel find ich nicht.
Kann mir jemand helfen ?


Greets
Karlheinz

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Eine Möglichkeit:

Lass alle Eingaben zu und kontrolliere es selber. Dazu musst Du eine 
eigene Klasse von CEdit ableiten, und in der den Messagehandler für 
eingegebene Zeichen (WK_KEYPRESSED) überladen. In Deiner Implementierung 
bestimmst Du, ob das Zeichen zulässig ist und rufst dann den 
Messagehandler der Basisklasse (CEdit::OnKeypressed) auf, ist es nicht 
zulässig, rufst Du ihn nicht auf.

von Karlheinz D. (kdruschel)


Lesenswert?

Hm,

ich habe jetzt folgendes probiert:

void CAlphaNumEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
  if (nChar == 65)// 65 = 'a'
    CEdit::OnKeyDown(nChar, nRepCnt, nFlags);
}

Problem: Was immer ich auch drücke, das Zeichen wird im Eingabefeld 
dargestellt, auch wenn ich nicht das 'a' betätige.
Mag sein dass der Wert (UpdateData()) die anderen Zeichen nicht enthält, 
aber sie sollen ja auch nicht dargestellt werden..........

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.