![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Leksey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 12.12.2004 Репутация: 1 Всего: 1 |
Как это сделать проще всего?Важно чтобы учитывалось Caps Lock и Shift.
Вообще суть задачи на нажатие клавиши перевести фокус ввода на edit и чтобы символ который был нажат не пропал. Может я пошел не тем путем для решения этой проблемы? |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
По теме необходимо MultiByteToWideChar,
по тексту наверное перехват WM_KEYDOWN и в теле обработки Edit1->SetFocus; Это сообщение отредактировал(а) Romikgy - 29.7.2005, 14:50 -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
|
|||
|
||||
| Leksey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 12.12.2004 Репутация: 1 Всего: 1 |
При чем здесь MultiByteToWideChar если нужно виртуальный код клавиши преобразовать в Unicode?
А если на WM_KEYDOWN делать SetFocus(hWnd) ,то потеряется символ нажатой клавиши. |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
перед сетфокус сделай SendMessage(hEdit, WM_KEYDOWN, wParam, lParam); Разве не поможет?
|
|||
|
||||
| Leksey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 12.12.2004 Репутация: 1 Всего: 1 |
Не поможет поскольку hEdit нужно послать WM_CHAR чтобы он добавил символ , а у WM_CHAR совсем другие параметры.Я даже попробавал не помогло.
|
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
это придется либо массив соответствия делать, либо сдвигом, типа он_кей "а" отличается от он_чар "а" на число х.
|
|||
|
||||
| Leksey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 12.12.2004 Репутация: 1 Всего: 1 |
Что значит делать массив соответствий?
Он может в разных системах разный быть(иначе зачем код виртуальный),и этим должна заниматься Windows, а не прграммист. Я просто уверен ,что есть такие функции, но найти их не получается. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
Не совсем понятно , что тебе нужно , но может быть такое подойдет
функция ToUnicode ? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Leksey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 12.12.2004 Репутация: 1 Всего: 1 |
ToUnicode РАБОТАЕТ!!
Спасибо Romikgy. Я ее в MSDN сразу заметил, но думал ,что она возвращает текст в одном регистре без учета shift и CapsLock. И еще вопрос:Возможна ли такая ситуация(например когда тормоза), что юзер уже отпустит клавишу, и GetKeyboardState вернет не соответствующее состояние клавиатуры? |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
Я не спец, и не знаю как работает GetKeyboardState (не приходилось с ней сталкиватся), но все в винде работает по событиям, если юзер отпустил кнопку, то в буфере должен быть код последней отпущенной кнопки, если нажал значит - код последней нажатой кнопки, а как может такое случится
чесн слово даже не знаю -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Leksey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 12.12.2004 Репутация: 1 Всего: 1 |
Все вопрос решен GetKeyState учитывает очередь сообщений потока, поэтому такой проблемы не будет.
Спасибо. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |