0

这个问题可能表明对 Windows 中的 DirectX 编程存在根本性的误解,但我遇到了一些我无法弄清楚的问题。我的程序在全屏运行时,有时会处于奇怪的状态,我必须强制关闭应用程序(CTRL+ALT+DEL)。

问题是当我按CTRL+ALT+DEL时,会出现任务管理器,但我不能使用鼠标;键盘一开始可以工作,但如果我用鼠标单击任务管理器窗口,它会失去焦点,我无法再重新获得焦点。该应用程序也不会最小化自身(Windows 应用程序编程问题?)

我的应用程序是否有可能窃取鼠标的专有财产?我正在使用 DirectInput,但应用程序根本不处理鼠标输入。此外,此问题仅在全屏运行应用程序时发生。如果我在窗口中运行它,一切都很好。

如果重要的话,我使用的工具是 MS Visual Studio 12、Windows 8 和 DirectX 9。

4

1 回答 1

0

对此的解决方案是取消获取所有输入设备并在应用程序失去焦点时停止渲染例程。我只是将应用程序设置为跟踪它是否具有焦点,并在 Windows 消息泵中适当地调整值以获取适当的消息。具体来说,当我收到以下消息时,我将焦点设置为“关闭”:

WM_SIZE(当wParam= SIZE_MINIMIZED), WM_KILLFOCUS, WM_ENTERSIZEMOVE, 和WM_ENTERMENULOOP

我重新关注以下消息:

WM_SIZE(所有其他情况)WM_SETFOCUS,,,,设置为真WM_EXITSIZEMOVEWM_ACTIVATEAPPwParamWM_EXITMENULOOP

WM_KILLFOCUS足以解决应用程序中 ALT-CTRL-DELETE-ing 的问题。

于 2013-06-15T05:20:32.810 回答