у нас есть один рабочий стол (1-й экран) для отображения изображения и другой сенсорный экран (2-й экран) для элемента управления, мы написали виртуальную клавиатуру (html & javascript) на сенсорном экране, в идеале, когда мы касаемся клавиш на сенсорном экране, мы могли бы ввести текст в поле ввода (в диалоговом окне ввода) на первом рабочем столе. Теперь проблема в том, что мышь теряется (изначально она находится в диалоговом окне ввода на первом рабочем столе), когда мы прикасаемся к сенсорному экрану, поэтому нам нужно создать глобальное окно в программе на C ++ и вручную скопировать каждое возможное диалоговое окно ввода в это глобальное окно. когда он используется, нам также нужно установить фокус для каждого возможного поля редактирования в этом диалоговом окне ввода. пожалуйста, посмотрите это:
для каждого возможного диалогового окна ввода мы добавляем
extern HWND activeInputWindow;
activeInputWindow=m_Edit_Name.m_hWnd;
также для каждого возможного поля ввода в этом окне мы должны добавить
activeInputWindow=GetDlgItem(IDC_EDIT_TEST)->m_hWnd;
тогда программа всегда делает это, чтобы вернуть исходное окно после нажатия на сенсорный экран (2-е окно)
extern HWND activeInputWindow;
if(IsWindow(activeInputWindow))
::SetFocus(activeInputWindow);
предположим, у нас есть 10 окон ввода и 10 полей ввода в каждом окне, тогда мне нужно кодировать 100 мест! Там должно быть несколько простых способов, Windows osk.exe (виртуальная клавиатура) не имеет проблем для этого, но мы должны использовать нашу собственную виртуальную клавиатуру .... Я пробовал GetTopWindow () и GetForegroundWindow (), но не работает .. Большое спасибо за помощь