Fullscreen mode for ActiveX control
我尝试为ActiveX控件实现切换到全屏模式。当前,这可以通过删除和隐藏父窗口并更改控件的位置和位置来实现。
但是,当控件处于全屏模式时,我在应用程序之间切换时遇到问题。如果我切换到另一个应用程序,然后单击我的窗口区域(不在任务栏中),则它似乎没有被激活。您可以在任务栏中看到另一个应用程序仍然具有高亮显示,并且在主屏幕上,除非具有焦点,否则我的窗口会部分隐藏在任务栏后面。
我处理
1 2 3 4 5 6 7 | ::ShowWindow(m_hWnd, SW_RESTORE); ::SwitchToThisWindow(m_hWnd, FALSE); ::SetForegroundWindow(m_hWnd); ::SetActiveWindow(m_hWnd); ::SetFocus(m_hWnd); ::BringWindowToTop(m_hWnd); ::SetWindowPos(m_hWnd, HWND_TOP, m_monitorInfo.rcMonitor.left, m_monitorInfo.rcMonitor.top, m_monitorInfo.rcMonitor.right, m_monitorInfo.rcMonitor.bottom, SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW); // SWP_NOACTIVATE, SWP_NOOWNERZORDER |
我还尝试使用
我不知道为什么会有这么多不同的功能,以至于我似乎都做大致相同的事情。但这并不重要,因为它们都不起作用。
正确执行我的控件的一种/正确方法是什么?
Windows可能会有点混乱,因为您正在用子窗口填充屏幕,但是您希望它的行为像顶级(重叠)窗口。主机应用程序可能没有被激活,因为您已经隐藏了它的窗口。
为全屏模式创建一个新的顶级全屏窗口可能会更好。如果此窗口归(最终)托管您的控件的顶级窗口所有,则新窗口将始终位于其上方,因此您无需隐藏现有窗口。激活应该可以。简而言之,您希望窗口的行为类似于弹出的模式对话框。
Adob??e的Flash Player似乎做类似的事情。全屏播放位于类
的窗口中