mfc-ml

2005年10月

31

[mfc 51596] Re:ダイアログのZ軸(Zオーダー)

宰相といいます。

ダイアログDの設定にフォアグランドに表示かシステム モーダルにチェックが付い
ていないでしょうか?
 チェックされていると下記のようになると思いますが

> この時点ではDのダイアログがCのダイアログの上にあります
> このときにCのダイアログをクリックしアクティブにしても
> Dのダイアログが上に表示されたままCのダイアログが
> アクティブになってしまいます。
31

[mfc 51595] Re: ダイアログのZ軸(Zオーダー)

とびびんです。

Mako wrote:

>プログラム風に書くと
>
>class DlgA : CDialog
>{
>    CDlgB   DlgB;
>}
>
>class DlgB : CDialog
>{
>    CDlgC   DlgC;
>    CDlgD   DlgD;
>}
>
>という感じです。
>  
>
>>C, D を双方とも B あるいは A の子とすれば、C と D のZオーダーは可変になり
>>ます。
>>    
>>
>よってC,D共にBの子になっています。
>
>この状態でCの上にDが表示されてしまいます。
>  
>

ここで言っているのは、CreateDialog 等に渡すオーナーウィンドウとの親子関
係のことではないでしょうか?
29

[mfc 51594] Re:ダイアログのZ軸(Zオーダー)

ども。まこです。

渋木さん、度々どうもです。

説明の仕方が悪かったかもしれません。

プログラム風に書くと

class DlgA : CDialog
{
    CDlgB   DlgB;
}

class DlgB : CDialog
{
    CDlgC   DlgC;
    CDlgD   DlgD;
}

という感じです。
>>子ダイアログBからさらに子ダイアログを・・・
この辺の説明が悪かったかもしれませんね。
申し訳ないです。。。

>C, D を双方とも B あるいは A の子とすれば、C と D のZオーダーは可変になり
>ます。
よってC,D共にBの子になっています。

この状態でCの上にDが表示されてしまいます。

>B または A のポインタを渡せばいいだ・・・
Bの画面を表示している時のみC,Dの画面は開けるため、
できるだけBの子ウインドウということにしておきたいと思っています。
Createの時にポインタをセットするだけなのであんまり関係ないのかもしれませ
んが、現在兄弟の位置にあるにもかかわらずZ軸の上下が変わらないことが
気になってしまってしょうがありません。

お手数ですが、もうしばらくの間お付き合いしてください。
よろしくお願いします。

//---------------------
開発環境
OS : Win2k or WinXp
Compiler : VC++6.0 
//---------------------


--------------------------------------
Know more about Breast Cancer
http://pr.mail.yahoo.co.jp/pinkribbon/
29

[mfc 51593] RE: ダイアログのZ軸(Zオーダー)

 渋木です。

> CとDは親子というよりは兄弟という気がするのですが
> それでもだめなのでしょうか?

もちろん、 駄目じゃないです。

>そこで子ダイアログBからさらに子ダイアログを
>C,Dの順に作成します

 と自分で書いているように、B と C を 「親子」にしているのはあなたのコードで
す。

 C, D を双方とも B あるいは A の子とすれば、C と D のZオーダーは可変になり
ます。

 D の作成の際に D の親として C ではなく、B または A のポインタを渡せばいいだ
けなんですが、それをする上で具体的に何か問題があるのでしょうか?

--
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
28

[mfc 51592] Re:ダイアログのZ軸(Zオーダー)

ども。まこです。

渋木さんお返事どうもです。

> という「親子関係」がある以上
> は無理です。

CとDは親子というよりは兄弟という気がするのですが
それでもだめなのでしょうか?
※書き忘れましたが表示順を変えたいのはCとDだけです。。。
※もう一つ忘れましたがダイアログベースです。
※さらに書くとクリックで順番を変えたいのでモードレスで作成してます

実際にメインウインドウから2つダイアログを作成した場合は
上下の順番は変わります。テストプログラムで確認済みです。

なぜテストプログラムでは上下が変わるのに本アプリではいかないのかが
わかりません。。。

> すべてのダイアログをメインウィンドウ(あるいはダイアログA)の子とするので
>は駄目なのでしょうか?
本アプリの制御の都合で上記の方法では他の画面と記述が異なるため
お客の関係上できるだけ控えたいと思っています。

何かいい方法はありませんでしょうか?
よろしくお願いします。

//---------------------
開発環境
OS : Win2k or WinXp
Compiler : VC++6.0 
//---------------------


--------------------------------------
Know more about Breast Cancer
http://pr.mail.yahoo.co.jp/pinkribbon/
記事検索
Amazon.co.jp
  • ライブドアブログ