親子関係のウィンドウの画面制御 – プログラミング – Home

親子関係のウィンドウの画面制御
 
通知
すべてクリア

親子関係のウィンドウの画面制御


ねこ
 ねこ
(@ねこ)
ゲスト
結合: 23年前
投稿: 94
Topic starter  

以下の資料1の用に、親ウィンドウをベースに子ウィンドウを作成しています。
いろいろな事情により、この親子関係を崩すことができません。
この様な作りの際、親ウィンドウを子ウィンドウに画面を重ねたら、
必ず、子ウィンドウが前面にきます。これをどうにかして、
アクティブになっている方を前面にもっていきたいのですが、方法がわかりません。

<資料1>
pclFrame->Create(NULL, 子ウィンドウ, WS_OVERLAPPEDWINDOW,
clRect, CWnd::FromHandle(親ウィンドウのハンドル),
MAKEINTRESOURCE(IDR_MAINFRAME));
※pclFrameはCFrameWndの派生クラスです。

<親子関係>
親<EXE> 子<モーダレスのDLL>

<環境>
VC++ 2008 Windows7


引用解決済
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

親子関係にあるウインドウの重なり順位(Zオーダーと呼びます)は、
変更できません。親が必ず後ろ側になります。
しかし、子供同士、又は親子関係の無いウインドウ同士の前後関係は
どうとでもできます。

本件の場合、現在親としているEXEウインドウを非表示とし、当該の
親ウインドウと、見た目及び機能がまったく同じ子(ポップアップ)
ウインドウを作成し、モーダレスDLGと兄弟とすることにより、
希望の機能が実現できます。

又は、当該DLGの親をデスクトップとし、EXEのウインドウと、親子関係
を持たないようにしてみる、のも、試してみる価値があります。

何れの場合も、GetParent()やMFCのGetOwner()を使用している場所の
テストが必要となるでしょう。


返信引用
ねこ
 ねこ
(@ねこ)
ゲスト
結合: 23年前
投稿: 94
Topic starter  

仲澤@失業者さん、ご教授ありがとうございます。
案として、出していただいた件ですが、どちらともダメだといわれました(;;)

<親子関係である理由>
タスクバーに子DLLのタスクを表示したくないからです。

<路線変更>
ウインドウの重なり順位を変更するか、タスクバーを非表示にする対応を
検討しています。簡単にできる方法があれば、ご教授ください。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

では、当該DLGの親を、別の不可視なウインドウを親として
作成してみてはどうでしょうか。
または、WS_EX_TOOLWINDOWとかですかね。

(蛇足)
仕様上でタスクバーをひどく気にされる方がいらっしゃいますが、
OSの仕様が変わればなくなるかもしれない機能に
コストをかけるのはどうなんでしょうかね。
しかもユーザーが任意にバーを非表示にもできますし。
実際のところWindows8からはどうなるんでしょう
・・・とかっ(笑)。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

いいわすれ。orz
1.ALT+Tab や ALT+F4
2.タスクマネージャ
3.Windowsキー+「何かのキー」
などの時の動作も配慮する必要があるかもしれませんね。
まぁ、あんまり深く追求しない方が良いかも知れませんけど(vv;)。


返信引用
ねこ
 ねこ
(@ねこ)
ゲスト
結合: 23年前
投稿: 94
Topic starter  

スタイルにWS_EX_TOOLWINDOWを追加することで対応しました。
それをすることによって、最小化ボタンが消えました。

InsertMenuとかで別途最小化ボタンをつけようとしているのですが、
いまいちわかりません(・・;)


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

「タスクバーに表示しない」ウインドウを最小化した場合
どのような取り扱いになるのか、ちょっと気になりますが、
まぁおいといて。

SetWindowLongPtr()でウインドウスタイルにWS_MINIMIZEBOXを
追加する・・・ぢゃだめですかね(未検証)。
設定した後にSetWindowPos()する必要があるかもしれません。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました