Visual c ++无法最大化应用程序

时间:2016-09-07 13:13:12

标签: windows visual-c++

我做了一个小exe给我一个窗口的状态,并在最小化时最大化。它适用于像Calculator这样的常规应用程序。但它不适用于我需要最大化的应用程序。 应用程序在任务栏中最小化,它是一个全屏应用程序,以双屏幕设置显示图像。

IsIconic在Calculator上工作但在应用程序上返回false。

IsWindowVisible返回false,但是ShowWindow不起作用,但是如果命令重新运行,则IsWindowVisible返回true。

如果我使用nircmd.exe命令 nircmd win max title" App name" 应用程序在两个屏幕上返回全屏。

试图 使用SC_RESTORE或SC_MAXIMIZE的PostMessage无效

这是代码

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

1 个答案:

答案 0 :(得分: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  );`