Не переводит из VK символа в русские буквы

Есть функция

short GetSymbolFromVK(WPARAM wParam) // переводит код нажатой клавиши в текст

{

    BYTE btKeyState[256];
    DWORD ProcessId;
    HKL hklLayout = GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(), &ProcessId)); // узнаем язык клавиатуры
    WORD Symbol;
    GetKeyboardState(btKeyState);
    if ((ToAsciiEx(wParam, MapVirtualKey(wParam, 0), btKeyState, &Symbol, 0, hklLayout) == 1) && GetKeyState(VK_CONTROL) >= 0 && GetKeyState(VK_MENU) >= 0)
        return Symbol;
    return -1;

}

С английской раскладкой все хорошо, но на русской меняет буквы, например, вместо "П" - "Р".

MSG msg;
GetMessage(&msg, hWnd, 0, 0);
if (msg.message == WM_KEYDOWN) {
    if (GetSymbolFromVK(msg.wParam) == -1) return;
        test += (GetSymbolFromVK(msg.wParam) );
                std::cout << test << std::endl;
}

Ответы (0 шт):