MAIN DIALOGを前面に持ってくるには?

解決


GAKU  2010-02-19 01:28:01  No: 71418

visual studio 2005 C++ MFC

ダイアログベースで画面を作成して、メインダイログ上の”あるボタン”を押すと子ダイログ(モードレスで)を出して、メインダイアログのスライダー値(10個ある)を子ダイアログのEditBox10個にリアルタイムに表示しています。動作は問題ないのですが、1点不明な点があります。

メイン画面をクリックしても前面に移動してくれません。メイン画面上でマウスをクリックするとOnLButtonDown()に飛んでくるのでインターネットで調べて出ていた
SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);を
実行してみたのですが何も変化しません。
なにをやっても子ダイアログが前面にいてメイン画面の一部を隠してしまいます。クリックした画面(メインダイアログ、子ダイアログ)を前面に出したいのですが何かいい方法はないでしょうか?


subaru  2010-02-19 02:32:37  No: 71419

メインダイアログを前面に持ってくるためにはダイアログのオーナーがデスクトップである必要があります。
MFCの場合はダイアログ作成時の引数に明示的にCWnd::GetDesktopWindow()を渡してやらないとうまくいかなかったと思います。


GAKU  2010-02-20 02:22:00  No: 71420

モードレスダイアログを作成する所で
//if (m_pModeless->Create(IDD_LEDPIXELDATA_DIALOG,0) == TRUE)

if (m_pModeless->Creat(IDD_LEDPIXELDATA_DIALOG,CWnd::GetDesktopWindow()) == TRUE)
のように変更しただけですんなり解決できました。

subaruさん  ありがとうございました。


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

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






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