|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.12.2009, 02:08 | #1 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
Преобразование символов в цифры
Здравствуйте. Как можно получить напрямую символ, который был введен по средством клавиатуры? Получаю данные через WM_KEYDOWN: symbol=wParam;
можно получать данные в виде чисел, если symbol это int, или саму букву, если это char и если нажатая клавиша имеет ввиду букву... но в этом случае проблема... буквы в верхнем регистре... можно конечно проверку осуществить на капс лок или шифт, и отменять верхний регистр (как это сделать - не знаю)... но тогда каким образом получить прочие символы, т.е запятые, кавычки, скобки и значки? не говоря уже о русских буквах... тогда наверное стоит получать циферные данные ... но как тогда преобразовать эту цифру в букву? Есть конечно идеи... но хочется узнать, существутю ли какие либо стандартные способы на С/С++, не зависимые от платформы, что бы можно было через WM_KEYDOWN получать сами символы, может быть даже с учетом шифта... если клавиша "1" это цифра 1, а с шифтом будет "!", или если раскладка русская, то при нажатии клавиши "А" получается русская буква "ы"... конечно я могу приступить к написанию собщственного преобразования... проверять получаемую цифру и делать символ... типа if (wParam == 'A') {symbol="a";} можно еще делать проверку, если нажат шифт, то symbol="A"; но собственно таких строк проверок будет более 100 Подскажите пожалуйста. Заранее благодарю. |
29.12.2009, 02:13 | #2 |
Форумчанин
Регистрация: 02.06.2009
Сообщений: 218
|
ммммм... есть пару функций, для того чтобы узнать что введено
Код:
|
29.12.2009, 02:21 | #3 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
ну я не совсем это имел ввиду. Может быть есть какие-либо автоматические проверки... например если зажать шифт и 1, то получить !... вместо расписания проверок, если была зажата клавиша шифт... если еще нажата клавиша "1", то символ будет !... или если раскладка русская, и при нажатии на клавишу "А", будет получена буква "ы", вместо опять написания этих проверок if (wParam == 'A'){symbol="ы";} и так для всех букв... просто побольшому счету интересует, есть ли стандартная функция, или нужно все эти проверки самому писать?
|
29.12.2009, 02:24 | #4 |
Форумчанин
Регистрация: 02.06.2009
Сообщений: 218
|
есть стандартная функция, видел пример как узнать, включен ли capslock, там какой то сайт прикольный, через API функции вроде это делается, но забыл (
|
29.12.2009, 02:40 | #5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Первое
Второе я думаю нужно именно второе. особо присмотрите к случаю второго параметра в MAPVK_VK_TO_CHAR(2) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
29.12.2009, 03:36 | #6 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
Спасибо. Дополнительно поискав, нашел в интернете функцию ToAsciiEx(); в которой указывается клавиша, статус языка (GetKeyboardLayout), статус и прочее... после эксперементов, вроди бы работает. Хороша ли эта функция, и нет у нее минусов при использовании?
|
29.12.2009, 03:59 | #7 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
29.12.2009, 04:11 | #8 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
Что ж, спасибо еще раз! И еще хотелось бы узнать... теперь я получаю готовый символ в переменной, но какой функцией я могу этот символ преобразовать в числовое значение? Ведь у каждого символа есть свое числовое значение ... их вроди бы 256 ?
|
29.12.2009, 04:19 | #9 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
вам нужно вывести число как строку?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
29.12.2009, 04:20 | #10 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
скорее как int, и желательно что бы эти числа были стандартны и функция всегда правильно преобразовывала символ в число и на других машинах. Я хочу с помощью цикла кое-что выполнить, и использовать эти цифровые значения... можно конечно и в ручную присвоить каждому символу свой номер, но что бы не писать более 100 строчек, посему и спрашиваю про функцию.
Последний раз редактировалось Артэс; 29.12.2009 в 04:26. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
преобразование в цифры | Артэс | Общие вопросы C/C++ | 8 | 23.11.2009 02:30 |
Дана строка символов. Удалить из исходной строки все цифры. | Striker14 | Помощь студентам | 4 | 26.02.2009 15:50 |
Дана строка символов. Задача: удалить из строки все цифры. | Striker14 | Помощь студентам | 1 | 25.02.2009 20:23 |
Преобразование символов в строке | ZeroQl | Помощь студентам | 12 | 17.02.2009 23:06 |