2016-09-07 11 views
0

私はウィンドウの状態を与え、最小化したときに最大化しました。それは電卓のような通常のアプリケーションで動作します。しかし、私は最大限に活用する必要があるアプリケーションでは動作しません。 アプリケーションはタスクバーで最小化されており、デュアル画面設定で画像を表示するフルスクリーンアプリケーションです。Visual C++はアプリケーションを最大化できません

IsIconicは電卓で動作しますが、アプリケーションではfalseを返します。

IsWindowVisibleはfalseを返しますが、ShowWindowは機能しませんが、コマンドが再実行された場合、IsWindowVisibleはtrueを返します。

nircmd.exeを使用すると、コマンド nircmd winの最大タイトル「アプリケーション名」 アプリケーションは、2つの画面で全画面表示に戻ります。

は、ここでは、コード

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 );` 
関連する問題