Buchstaben von Tastatur einlesen

rano

Mitglied
Hallo, ich bin Newbie wenn es um "mit MFC programmiern " geht. bis jetzt habe ich nur Consolen Anwendungen geschrieben. Mein Problem (Frage) ist::

Jedesmal wenn eine Tastatur taste gedrückt wird . soll geprüft ob die gedrückte Taste eine Buchstabe ist (char) und in eine Variable speichern ( gleich wie Hangman Spiel). (für consolen wäre getch()...)
ich habe im Internet gesucht und vieles über OnKeyDown , Translate.......aber habe nicht verstanden wie ich das machen soll.

kann mir jemand Helfen und den Code schreiben oder erklären wie ich das tun kann. ich lese Unicode zeichen aus dem Tastatur (VC++6)

danke:-(
 
Du warst fast schon dran:

Versuche OnChar (WM_CHAR) einzusetzen. Du bekommst das tatsächlich eingegebene Zeichen und musst dich nicht um gedrückte Shift-Tasten, andere Tastaturlayouts oder ähnliches kümmern.

Nur noch prüfen, ob nChar (oder wie der Parameter dann heisst) ein gültiger Buchstabe ist.
 
Danke für deine Antwort. ichhabe auch an OnChar gedacht aber habe ich gelesen das ich die Funktion benutzen kann nach ein ONKeyDown ..so wirklich habe ich nicht verstanden wie ?..kannst vielleicht mir ein Beispiel schreiben.
das ist was ich gemacht habe aber das hat nicht funktioniert

void CReadfileDlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen und/oder Standard aufrufen

UINT i=0;
// UINT Lenght;//Lenght of Sentence

if( _istalpha(nChar) )
{

//Lenght = m_test.GetLength();
//for (i=0;i<Lenght;i++)
//{
//while(m_test.GetAt(i)==nChar) ;
//{
m_strAlpha.SetAt(i,nChar);
UpdateData(FALSE);
//}
//}
}

CDialog::OnChar(nChar, nRepCnt, nFlags);
}
code habe ich zum tesen so geändert aber ohne Erfolg

Bitte um Hilfe
 
Zuletzt bearbeitet:
Ich gehe davon aus, dass m_strAlpha ein CString ist:

Code:
void CReadfileDlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
// TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen und/oder Standard aufrufen

UINT i=0;
// UINT Lenght;//Lenght of Sentence

if( _istalpha(nChar) ) 
{
  m_strAlpha += nChar;
}

}

Ich weiss nicht, was m_test in dem Zusammenhang ist. Und UpdateDate ist von jeher etwas, das man besser nicht benutzt.
 
Danke für dein Tip aber Leider hat auch nicht funktioniert.

wenn ich es compiliere dann erhalte ich die Fehler "Dlg.cpp(259) : error C2593: 'Operator +=' ist mehrdeutig" aber erst wenn ich eine konvertierung durchführe " m_strAlpha += wchar_t(nChar); " dann kein Fehlermeldung .

ich habe als Beispiel eine UNICODE Anwendung ( auf dem Gerüst sind 2 Staticfelder zu je habe ich eine CString M_varaible : m_test und m_strAlpha.
m_test speicher ein Wort und Zeigt es im 1. Feld mit UpdateData(FALSE). DAS KLAPT

im m_strAlpha soll ich Die buchstaben die ich tippe Auffangen und im 2. Feld anzeigen (wenn ein char- Taste gedrückt wird zeigt sie an wenn 2. Taste zeigt die 2 Buchtaben wenn 3. Taste gedrückt dann zeigt alle Drei Buchstaben ...uzw. )
KLAPT NICHT

auf dem Gerüst sind noch zwei Schaltflächen (start und Cancel)
wenn start gedrückt Wort im Feld1 Anzeigen ...
wenn ich ein Char Taste klicke dann Buchtaben im Fweld 2 Anzeigen

cancel Schliesst die Anwendung .

ein Freund sagte mir das ich sollange steuer Element auf dem Gerüst habe kann ich die Tastatur Nachrichten nicht empfangen (hatte er es in " vc++ in 21 Tage" gelesen ) stimmt das ? wie soll ich dan vorgehen?

Vielen Dank
 
Zuletzt bearbeitet:
Da hat dein Freund insofern recht, dass natürlich die Control (Static, Button, wasauchimmer) die Tastendrücke gesendet bekommt, die den Fokus hat.

Du kannst in MFC aber PreTranslateMessage verwenden, und dort per Hand die WM_CHAR abfangen. Dann bekommst du alle Tasten bevor sie an irgendeine Control gesendet werden.
 
Such mal im Forum, ich habe es schon mindestens zweimal gepostet, zuletzt noch in dieser Woche. Such "PreTranslateMessage".
 
Hallo,
vielen Dank für deine Hilfe. ich habe es mit PretranslateMessage geschaft..jetzt wird alles was ich eintippe angezeigt...

ein kleines Problem habe ich noch
mein tastatur ist mit 4 Sprachen belegt (Englisch, Deutsch, Arabisch, Französisch) wenn ich die anwendung für arabisch compiliere und atasten klicke zeigt alles richtig aber wenn ich auf einer der zahlentasten (die über die Buchstaben stehen) dann werden sonder zeichen von französisch angezeigt çàèé
 

Neue Beiträge

Zurück