visual studio 2005 C++ MFC
ダイアログベースで画面を作成して、メインダイログ上の”あるボタン”を押すと子ダイログ(モードレスで)を出して、メインダイアログのスライダー値(10個ある)を子ダイアログのEditBox10個にリアルタイムに表示しています。動作は問題ないのですが、1点不明な点があります。
メイン画面をクリックしても前面に移動してくれません。メイン画面上でマウスをクリックするとOnLButtonDown()に飛んでくるのでインターネットで調べて出ていた
SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);を
実行してみたのですが何も変化しません。
なにをやっても子ダイアログが前面にいてメイン画面の一部を隠してしまいます。クリックした画面(メインダイアログ、子ダイアログ)を前面に出したいのですが何かいい方法はないでしょうか?
メインダイアログを前面に持ってくるためにはダイアログのオーナーがデスクトップである必要があります。
MFCの場合はダイアログ作成時の引数に明示的にCWnd::GetDesktopWindow()を渡してやらないとうまくいかなかったと思います。
モードレスダイアログを作成する所で
//if (m_pModeless->Create(IDD_LEDPIXELDATA_DIALOG,0) == TRUE)
を
if (m_pModeless->Creat(IDD_LEDPIXELDATA_DIALOG,CWnd::GetDesktopWindow()) == TRUE)
のように変更しただけですんなり解決できました。
subaruさん ありがとうございました。