掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DiglogWindowの最少化位置の指定 (ID:73023)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 現状では 一度最小化され、Desktopの左下のWindowはマウスで位置を任意にどこでも アプリの描画Window内(に重ねて)でも移動できます。 その「モードレスダイアログ」は「アプリの描画Window」ではなく「デスクトップ」を親として作成していると推測できる。 だとすれば、普通はこういう動作になる。 それでも何とかしたいのなら WM_WINDOWPOSCHANGED を捕まえてやれば(超無理やりにだが)それっぽくできる。 void 「アプリの描画Window」::OnWindowPosChanged(WINDOWPOS *lpwndpos) { CDialog::OnWindowPosChanged(lpwndpos); if ((lpwndpos->flags & (SWP_NOMOVE | SWP_NOSIZE)) != (SWP_NOMOVE | SWP_NOSIZE)) { if (「モードレスダイアログ」.GetSafeHwnd() != NULL) { CRect rect, modeless; GetClientRect(rect); ClientToScreen(rect); 「モードレスダイアログ」.GetWindowRect(modeless); WINDOWPLACEMENT wp = { 0 }; wp.length = sizeof(WINDOWPLACEMENT); 「モードレスダイアログ」.GetWindowPlacement(&wp); wp.flags = WPF_SETMINPOSITION; // 「モードレスダイアログ」の最小化時の位置を「アプリの描画Window」領域の左下に wp.ptMinPosition.x = rect.left; wp.ptMinPosition.y = rect.bottom - modeless.Height(); 「モードレスダイアログ」.SetWindowPlacement(&wp); } } } 「モードレスダイアログ」に topmost スタイルを設定しないと「アプリの描画Window」の裏に隠れてしまうけどね…
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.