这个问题可能表明对Windows中的DirectX编程存在根本性的误解,但我有一些我无法弄清楚的问题。我的程序,当全屏运行时,有时会进入一个奇怪的状态,我必须强制关闭应用程序(CTRL + ALT + DEL)。
问题是,当我按下CTRL + ALT + DEL时,出现任务管理器,但我无法使用鼠标;键盘首先工作,但如果我用鼠标单击任务管理器窗口,它会失去焦点,我不能再重新获得焦点。该应用程序也没有最小化自己(Windows应用程序编程问题?)
我的应用程序是否有可能窃取鼠标的独占权?我正在使用DirectInput,但应用程序根本不处理鼠标输入。此外,仅在运行应用程序全屏时才会出现此问题。如果我在一个窗口中运行它,一切都很好。
如果重要,我使用的工具是MS Visual Studio 12,Windows 8和DirectX 9.
答案 0 :(得分:0)
解决方法是取消所有输入设备并在应用程序丢失焦点时停止渲染例程。 我只是设置应用程序以跟踪它是否具有焦点,并在Windows消息泵中适当地调整值以获取相应的消息。具体来说,当我收到以下消息时,我将焦点设置为“关闭”:
WM_SIZE
(wParam
= SIZE_MINIMIZED
时),WM_KILLFOCUS
,WM_ENTERSIZEMOVE
和WM_ENTERMENULOOP
我重点关注以下消息:
WM_SIZE
(所有其他情况),WM_SETFOCUS
,WM_EXITSIZEMOVE
,WM_ACTIVATEAPP
wParam
设置为true,WM_EXITMENULOOP
WM_KILLFOCUS
足以解决ALT-CTRL-DELETE-out out of the application的问题。