所以我试图将另一个应用程序移动到第二个屏幕,然后我想在 C++ 中将其设置为全屏。
我从进程列表中获得应用程序的 HWND 句柄,然后我可以使用 MoveWindow 设置窗口中我想要的位置。这非常有效。
是否有类似的方法可以将应用程序设置为全屏?我似乎只能找到有关将您自己的应用程序设置为全屏的信息。但在这种情况下,我希望能够移动我想要的任何应用程序并将其设置为全屏。 (只要这是可能的,但出于我需要它的目的,它应该是)
如果我在移动窗口后按 Alt+Enter 键,它就会完全按照我的要求运行。所以我希望我可以从代码中做到这一点?
编辑:顺便说一句,我试过 ShowWindow(windowToMove, SHOW_FULLSCREEN); 但是好像是最大化了但是又不像ALT+ENTER。
提前感谢您的帮助!
最佳答案
BOOL IsWindowMode = TRUE;
WINDOWPLACEMENT wpc;
LONG HWNDStyle = 0;
LONG HWNDStyleEx = 0;
void FullScreenSwitch( )
{
if ( IsWindowMode )
{
IsWindowMode = FALSE;
GetWindowPlacement( HWNDWindow, &wpc );
if ( HWNDStyle == 0 )
HWNDStyle = GetWindowLong( HWNDWindow, GWL_STYLE );
if ( HWNDStyleEx == 0 )
HWNDStyleEx = GetWindowLong( HWNDWindow, GWL_EXSTYLE );
LONG NewHWNDStyle = HWNDStyle;
NewHWNDStyle &= ~WS_BORDER;
NewHWNDStyle &= ~WS_DLGFRAME;
NewHWNDStyle &= ~WS_THICKFRAME;
LONG NewHWNDStyleEx =HWNDStyleEx;
NewHWNDStyleEx &= ~WS_EX_WINDOWEDGE;
SetWindowLong( HWNDWindow, GWL_STYLE, NewHWNDStyle | WS_POPUP );
SetWindowLong( HWNDWindow, GWL_EXSTYLE, NewHWNDStyleEx | WS_EX_TOPMOST );
ShowWindow( HWNDWindow, SW_SHOWMAXIMIZED );
}
else
{
IsWindowMode = TRUE;
SetWindowLong( HWNDWindow, GWL_STYLE, HWNDStyle );
SetWindowLong( HWNDWindow, GWL_EXSTYLE, HWNDStyleEx );
ShowWindow( HWNDWindow, SW_SHOWNORMAL );
SetWindowPlacement( HWNDWindow, &wpc );
}
}
此代码将窗口窗口切换为全屏并返回。 (WINAPI,需要以窗口模式启动目标进程)
关于c++ - 使用 HWND 切换应用程序全屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36504311/