![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
фокус ввода [D5, Win95/98, WinME, NT4, Win2k, WinXP]
wal © (2002-08-14 11:56:00)Уважаемые Мастера, как узнать кому принадлежит фокус ввода?
Конкретнее - куда ушел бы символ, если бы была нажата кнопка на клавиатуре. Просто имеется девайс - работает под виндовзом, имеется сенсорный экран - эмулирует мышь. Хотелось бы отказаться от клавиатуры - и для этого пишется программный эмулятор, задача которого - при нажатии пальцем на экран (при этом происходит клик по буттону) вывести соответствующую буковку(циферку) в тот элемент ввода, который был активет до клика по буттону, и вернуть ему фокус ввода. Принимаются любые предложения. Спасибо.
wal (2002-08-15 10:49:00) [1]Всем огромная благодарность и ящик виртуального пива :)
Вобщем спасибо.
rhf (2002-08-15 05:40:00) [2]через getFocus и attachThreadInput
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1029365322&n=0
Ребенок Кирилл (2002-08-15 02:58:00) [3]Diamond Cat © Ты не мог бы слить заодно и мне?
Ученик (2002-08-14 16:16:00) [4]procedure TForm1.FormShow(Sender: TObject);
begin
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_NOACTIVATE)
end;
Diamond Cat (2002-08-14 15:49:00) [5]Если не ошибаюсь то при переходе фокуса ввода от одного компонента к другому, проскакивают сообщения типа wm_killfocus и wm_setfocus (точно не помню какое нужно), и в каком-то из параметров параметров этих сообщений содержится хендл контрола потерявшего фокус, таким образом поставив системный хук можно узнать какой контрол был активен, если нужно могу слить пример (когда-то решал подобную задачу).
Игорь Шевченко (2002-08-14 14:46:00) [6]У Рихтера был пример определения того, какое окно получит клавиатурный ввод
Игорь Шевченко (2002-08-14 14:44:00) [7]AttachThreadInput не поможет ?
wal (2002-08-14 14:13:00) [8]
> Все равно, надо ведь будет драйвер для этого устройства
> писать, а правильно понимаю ?
Не совсем - можно считать, что это компьютер, IBM-совместимый, установлена WinXP, требуется изобразить программу - эмулятор клавиатуры (типа как в бесклавиатурных карманных компьютерах).
Основная проблема в том, что при нажатии на кнопку фокус ввода переходит к моей программе.
Игорь Шевченко (2002-08-14 14:04:00) [9]Тогда это забота win32k.sys - определять, куда пойдут данные.
Все равно, надо ведь будет драйвер для этого устройства писать, а правильно понимаю ?
wal (2002-08-14 13:59:00) [10]GetFocus работает только внутри своего приложения :(
Игорь Шевченко (2002-08-14 12:13:00) [11]GetFocus, наверное