使用HWND切换应用程序全屏

时间:2016-04-08 16:06:48

标签: c++ fullscreen hwnd

所以我试图将另一个应用程序移动到第二个屏幕然后我想用C ++全屏设置。

我从进程列表中获取应用程序的HWND句柄,然后我可以使用MoveWindow从我想要的窗口设置位置。这非常有效。

是否有类似的方法将应用程序设置为全屏?我似乎只能找到有关将您自己的应用程序设置为全屏的信息。但在这种情况下,我希望能够移动我想要的任何应用程序并将其设置为全屏。 (只要这是可能的,但出于我需要的目的,它应该是)

如果我在移动它后按下窗口上的Alt + Enter,它就会完全符合我的要求。所以我希望我能从代码中做到这一点?

编辑:BTW我试过ShowWindow(windowToMove,SHOW_FULLSCREEN); 但它似乎最大化它,但它与ALT + ENTER不相似。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

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,需要在窗口模式下启动目标进程)