2016-09-07 2 views
0

나는 창을 최소화하고 최소화 할 때 약간의 exe를 만들었습니다. 그것은 계산기와 같은 일반 응용 프로그램과 함께 작동합니다. 하지만 최대화해야하는 애플리케이션에서는 작동하지 않습니다. 응용 프로그램은 작업 표시 줄에서 최소화되어 있으며 이중 화면 설정에서 이미지를 표시하는 전체 화면 응용 프로그램입니다.Visual C++에서 응용 프로그램을 최대화 할 수 없습니다.

IsIconic 계산기에서 작동하지만 응용 프로그램에서 false를 반환합니다.

IsWindowVisible이 false를 반환하지만 ShowWindow가 작동하지 않지만 명령을 다시 실행하면 IsWindowVisible이 true를 반환합니다.

nircmd.exe를 사용하는 경우 nircmd win max title "응용 프로그램 이름" 응용 프로그램이 두 화면에서 전체 화면을 반환합니다.

다음은 코드

HWND hWnd = FindWindow(NULL, "Application name"); 
if (IsWindow(hWnd)) 
{ 
    SetForegroundWindow(hWnd); // I'll give focus to my window. This is always working. 
    std::cout << "Visible " << IsWindowVisible(hWnd) << std::endl; 

if(!IsWindowVisible(hWnd)) 
    { 
     std::cout << "Maximized " << std::endl; 
    ShowWindow(hWnd, SW_MAXIMIZE); // This is working only if the window is minimized while in fullscreen mode 
    //PostMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0); 
    } 
} 
+0

어쩌면 문제의 앱은 단순히 그 메시지를 무시의 아무 소용이

에 SC_RESTORE 또는 SC_MAXIMIZE와 PostMessage를 시도? –

+0

하지만 nircmd.exe는 과부를 복원하여 방법이 있어야합니다. –

답변

0
HWND hWnd = FindWindow(NULL, "Application name"); 

RECT rect; 
// initial rect to your desired size 
int width = rect.right - rect.left; 
int height =rect.bottom - rect.top; 

::MoveWindow(hWnd,rect.left,rect.top,width,height,TRUE); 
::BringWindowToTop(hWnd); 
FromHandle(hWnd)->ShowWindow(TRUE); 
FromHandle(hWnd)->SetWindowPos(&CWnd::wndTopMost,rect.left,rect.top,width,height,SWP_FRAMECHANGED |SWP_SHOWWINDOW );` 
관련 문제