3

を使用CWnd::ShowWindow(SW_SHOWMAXIMIZED)すると、期待どおりにアプリ ウィンドウが最大化されます。

ただし、アプリの復元ボタンをクリックする (またはタイトル バーをダブルクリックする) と、復元されたサイズは最大化されたウィンドウと同じサイズになり、ユーザーを混乱させます。

この代替コードを使用すると、同じ問題があります。

WINDOWPLACEMENT wndpl;
GetWindowPlacement(&wndpl);
wndpl.showCmd = SW_SHOWMAXIMIZED;
SetWindowPlacement(&wndpl);

復元時にデフォルトの最大化されていないサイズを維持するにはどうすればよいですか。

4

2 に答える 2

2

私は自分の問題を解決しました。解決策はあなたの問題も解決するかもしれません。私の問題は、CMainFrame::OnCreate 内で SetWindowPlacement(&wndpl) を呼び出しても、ウィンドウが最大化された場合にウィンドウが適切に復元されないことでした。SetWindowPlacement の前に 2 行のコードを追加したところ、期待どおりに動作するようになりました。

CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    ...
    // Obtain wndpl, maybe from registry
    AfxGetApp()->m_nCmdShow = wndpl.showCmd;
    wndpl.showCmd = SW_SHOW;
    SetWindowPlacement(&wndpl);
}

これらの 2 行は、CWinApp::m_nCmdShow から取得したパラメーターを使用して ShowWindow を呼び出す ActivateFrame を呼び出すときに、基になるコードが混乱しないようにします。

于 2011-03-18T16:26:46.180 に答える
-1

すべての情報は、拡張子が.RCのファイルにあります。同じウィンドウで「DIALOGEX」を探す必要がありますが、Maximize/Restoreプロシージャを使用したことはありません。任意のエディター(メモ帳、ウルトラエディットなど)を使用して変更できます

于 2010-09-02T10:53:33.627 に答える