Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > И снова хуки


Автор: Cristall512 21.1.2011, 23:49
Здравствуйте!

Бьюсь всю ночь над этой курсовой. В понедельник сдавать. Ставлю хук LL на клаву и пытаюсь выяснить, какая кнопка нажата. Для этого обращаюсь к структуре, на которую указывает lParam.

Код

....
    p=(PKBDLLHOOKSTRUCT)lParam;
    if ((wParam == WM_KEYDOWN)||(wParam == WM_SYSKEYDOWN))
    {
        keys=itoa(p->vkCode, k, 16);
                MessageBox(NULL, (LPCWSTR)keys, NULL, MB_OK);
    }
....


так вот в окне сообщения появляются китайские иероглифы. Причём много, строчки 3. Что неправильно? Как получить код клавиши? В инете копался, нигде не нашёл подробной инфы... Пожалуйста, помогите

Автор: 586 21.1.2011, 23:55
MessageBoxA(NULL, keys, NULL, MB_OK);

Автор: Cristall512 22.1.2011, 07:04
Нет, ошибка cannot convert parametr 2 from *char to LPCWSTR. У меня VS 2005

Автор: 586 22.1.2011, 07:47
Цитата(Cristall512 @  22.1.2011,  07:04 Найти цитируемый пост)
ошибка cannot convert parametr 2 from *char to LPCWSTR. У меня VS 2005 

Это вы вызываете MesageBoxW. А MessageBoxA как раз и принимает параметры в виде char*.

Автор: xvr 22.1.2011, 13:51
Очень простое правило - если у вас в программе стоит (LPCWSTR) или (LPWSTR) или еще что то с упоминанием wstr, и куда то выводятся иероглифы, то почти наверняка (99.999%) вы накосячили с преобразованием Ascii <-> Unicode (или вообще не в курсе существования Unicode'а)  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)