画面の表示サイズを統一するには?

解決


初心者  2006-02-07 23:11:31  No: 60683

実行するとダイアログ画面が表示されるSDIプログラムを作りました。
ですが実行するたびに画面の表示位置が異なるので
Create下記のプログラムを追加しました。

    CDialog*  m_pDlg;
    CFrameWnd*   pParentFrame = GetParentFrame();
    CRect    rectSize;
    int    nX, nY;

    m_pDlg = new CSdiDialog;

    m_pDlg->GetWindowRect(rectSize);
    pParentFrame->CalcWindowRect(rectSize);
    nX=(GetSystemMetrics(SM_CXSCREEN)-(rectSize.right-rectSize.left))/2;
    nY=(GetSystemMetrics(SM_CYSCREEN)-(rectSize.bottom-rectSize.top))/2;
    pParentFrame->SetWindowPos(NULL, nX, nY, rectSize.right, rectSize.bottom, SWP_NOACTIVATE | SWP_NOZORDER);

これで実行したところ、表示位置は変わらないのですが、今度はサイズが実行の度に異なるようになってしまいました。
対処法を教えて下さい。

OSは  WindowsNT2000  で、Versionは  Microsoft Visual Studio .NET 2003  です


REE  2006-02-08 02:31:31  No: 60684

一番簡単なのは、SetWindowPosの最後の引数にSWP_NOSIZEを追加すること。
他の方法としては、SetWindowPosのrectSize.rightをrectSize.Width()、rectSize.bottomをrectSize.Height()にする。


zzz  2006-02-08 23:55:53  No: 60685

ありがとうございます。
教えてくださった通り、SWP_NOSIZEを追加することで解決しました。


zzz  2006-02-08 23:56:50  No: 60686

名前間違えました。
質問した者と同一人物です。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加