2016-04-08 16 views
0

So versuche ich, eine andere Anwendung auf einen zweiten Bildschirm zu verschieben, und dann möchte ich es Vollbild in C++ einstellen.Verwenden Sie HWND um Anwendung Vollbild umschalten

Ich habe das HWND-Handle von der Anwendung aus einer Liste von Prozessen und dann kann ich die Position aus dem Fenster, wo ich möchte mit MoveWindow. Das funktioniert perfekt.

Gibt es eine ähnliche Möglichkeit, die Anwendung auf Vollbild zu setzen? Ich kann nur scheinbar Informationen darüber finden, wie Sie Ihre eigene Anwendung auf den Vollbildschirm einstellen können. Aber in diesem Fall möchte ich in der Lage sein, jede gewünschte Anwendung zu verschieben und auf Vollbild zu setzen. (Soweit das möglich ist, aber für den Zweck ich brauche es sollte es sein)

Wenn ich Alt + Enter auf das Fenster nach dem Verschieben, es tut genau das, was ich will. Also ich hoffe ich kann das aus Code machen?

BEARBEITEN: BTW Ich habe ShowWindow versucht (windowToMove, SHOW_FULLSCREEN); Aber es scheint zu maximieren, aber es ist nicht ähnlich zu ALT + ENTER.

Vielen Dank für jede Hilfe im Voraus!

+3

Sie müssen eine API von der zweiten App ausgesetzt finden, um den Vollbildmodus auszulösen. Sonst wird sein interner Zustand alles durcheinander bringen. –

+0

Danke Ich hatte schon ein Gefühl, das wäre die einzige Option. Aber ich war mir nicht sicher. –

Antwort

2
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); 
    } 
} 

Dieser Code Fenster im Fenster auf Fullscreen und zurück wechseln. (WINAPI, und müssen Zielprozess im Fenstermodus starten)