ウインドウ名と一致するウインドウを最前面にするには?

解決


わくわくわくさん  2006-11-12 15:21:59  No: 63571  IP: 192.*.*.*

いきなりですが、ウインドウを最前面にする処理について教えてください。
VC++のMFCでダイアログベースでプログラムを作っています。
最前面処理をするには、SetWindowPosでZオーダをかえることはわかったのですが、あるウインドウ名をもつウインドウを指定して、そのウインドウを最前面するやり方を教えてください。ちなみにopenCVで作成したウインドウを最前面にしたいです。
SetWindowPosだけだと、ダイアログが最前面にきてしまいます。
ほしいウインドウハンドルを取得してSetWindowPosを使うと思うのですが関連がわかりません。初心者ですがどうぞよろしくお願いします。

編集 削除
Blue  2006-11-12 16:08:53  No: 63572  IP: 192.*.*.*

FindWindowで対象ウィンドウを探して、SetWindowPosで最前面にする。

ダイアログのメソッド内のコードであれば

CWnd* pTargetWnd = this->FindWindow(_T("対象のウィンドウクラス名"), _T("対象のウィンドウタイトル"))
if (pTargetWnd != NULL )
{
   pTargetWnd->SetWindowPos( // 省略
}

「対象のウィンドウクラス名」はSpy++等で調べてください。
ウィンドウタイトルが一意であれば、NULLでもいいけど。

編集 削除
わくわくさん  2006-11-12 18:09:08  No: 63573  IP: 192.*.*.*

Blue様さっそく解答ありがとうございました。
おかげさまで問題を解決することができました。
FindWindowとSetWindowPosのつながりを少しだけ理解することが出来ました。もっと勉強せねば・・・・。

編集 削除
わくわくわくさん  2006-11-12 18:09:40  No: 63574  IP: 192.*.*.*

本当にありがとうございました。

編集 削除