Kod ASCII && WM_KEYDOWN

0

Jakiś czas temu zaczolem sobie pisac własne GUI pod DirectDraw i natrafilem na nastepujący (być może mały) problem :-)
Aktualnie kodze coś a'la edit.
Przy wciśnięciu klawisza na klawiaturze przypisuje do tablicy przechowującej wprowadzany tekst zawartość parametru wParam jako kolejny znak.
Najlepiej zobrazuje to kawałek kodu:

char szText[255]; //wyzerowana tablica

//... w MainWndProc:
switch(msg)
{
case WM_KEYDOWN:
szText[strlen(szText)]=wParam;
break;
//...
}

Problem polega na tym, ze gdy wciskam klawisze a-z to niezaleznie od tego czy Caps Lock jest wł. czy tez wył. do tablicy trafiają tylko duże litery. Tak samo nie da sie poprawnie wprowadzać polskich znaków (ą, ć, ę...) a wcisniecie Alt, Shift lub innych klawiszy nie obrazujących standardowych znaków, niestety powodują wpisanie do tablicy kodu tych klawiszy :| .

Czy jest jakiś sposób bezproblemowego odczytania wciśnietego klawisza w sposób w jaki robią to zwykle edytory tekstu bez zabawy w sprawdzanie czy Alt, Shift itd. są wciśniete?

0

OK juz sobie poradzilem :) wystarczyło zastąpić WM_KEYDOWN na WM_CHAR.
Czemu mi to Od razu nie przyszlo do głowy ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1