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

解決


わくわくわくさん  2006-11-13 00:21:59  No: 63571

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


Blue  2006-11-13 01:08:53  No: 63572

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

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

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

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


わくわくさん  2006-11-13 03:09:08  No: 63573

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


わくわくわくさん  2006-11-13 03:09:40  No: 63574

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


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

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






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