実行するとダイアログ画面が表示される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 です
一番簡単なのは、SetWindowPosの最後の引数にSWP_NOSIZEを追加すること。
他の方法としては、SetWindowPosのrectSize.rightをrectSize.Width()、rectSize.bottomをrectSize.Height()にする。
ありがとうございます。
教えてくださった通り、SWP_NOSIZEを追加することで解決しました。
名前間違えました。
質問した者と同一人物です。
ツイート | ![]() |