Get Ascii code from keyboard on windows/c++ (Ita)

Gli eventi windows per la gestione dell'input della tastiera non restituiscono direttamente un codice ascii ma uno molto più intrippato chiamato Virtual Key, studiato per consentire anche la gestione di quei tasti che non fanno parte del testo (come i cursori, il tasto stampa, etc...) o la conversione diretta in formati più avanzati, come l'unicode.

Se è mia intenzione fare un editor di testo, devo necessariamente ottenere il codice ascii per ogni rispettivo tasto premuto nella tastiera, dato che il virtual key non può essere gestito direttamente. Ho notato che in rete non circola granchè al riguardo e che la guida msdn è così confusa e superficiale da far venire i brividi, per questo motivo ho deciso di pubblicare questo piccolo listato in c++ che risolve alla perfezione il problema:

LRESULT WINDOWPROC(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
BYTE keyStateArr[256];
WORD value;
CHAR asciicode;

switch( message )
{
case WM_KEYDOWN:

//preleva lo stato della tastiera
GetKeyboardState(keyStateArr);

//converte la virtual key wParam in codice ascii
if (ToAscii(wParam, (T_DWORD)lParam, keyStateArr, &value, 0)  != 0)
{
asciicode = (T_CHAR) value;

//restituisce le maiuscole se è premuto il tasto shift
if ((GetKeyState(VK_SHIFT) & 0x8000) && wParam >= 'a' && wParam <= 'z')
asciicode += 'A'-'a';
}
else
{
//restiruisce 0 se non è premuto alcun tasto con codice ascii
asciicode = 0;
}

Scrivi_il_testo(asciicode);

break;
}

return DefWindowProc(hWnd, message, wParam, lParam);
}