我们有一个用于显示图像的桌面(第一个屏幕)和另一个用于控制的触摸屏(第二个屏幕),我们在触摸屏上编写了一个虚拟键盘(html&javascript),理想情况下,当我们触摸触摸屏上的按键时,我们可以输入第一个桌面上的editbox(在输入对话框窗口中)中的文本。现在的问题是,当我们触摸触摸屏时,鼠标丢失了(最初是在第一个桌面的输入对话框中),因此我们必须在C ++程序中创建一个全局窗口,并手动将每个可能的输入对话框窗口复制到该全局窗口中使用时,我们还需要在此输入对话框窗口中为每个可能的编辑框设置焦点。请看这个:
对于每个可能的输入对话框,我们添加
extern HWND activeInputWindow;
activeInputWindow=m_Edit_Name.m_hWnd;
还必须为该窗口中的每个可能的输入框添加
activeInputWindow=GetDlgItem(IDC_EDIT_TEST)->m_hWnd;
然后,在单击触摸屏(第二个窗口)后,程序总是执行此操作以返回原始窗口
extern HWND activeInputWindow;
if(IsWindow(activeInputWindow))
::SetFocus(activeInputWindow);
假设我们有10个输入窗口,每个窗口有10个输入框,那么我需要编码100个位置!必须有一些简单的方法,Windows osk.exe(虚拟键盘)对此没有问题,但是我们必须使用自己的虚拟键盘。...我尝试了GetTopWindow()和GetForegroundWindow(),但无法正常工作。帮助
答案 0 :(得分:0)
答案 1 :(得分:0)
这正试图使用错误的工具解决问题。您真正想要的是一个可以接收输入但拒绝激活的窗口。为此,请返回MA_NOACTIVATE
处理WM_MOUSEACTIVATE消息。这也适用于触摸输入。
有关所有内容,请参见How can I have a window that rejects activation but still receives pointer input?。