モーダルダイアログをモードレスにする方法
モーダルダイアログとは、ダイアログを表示したら、それを閉じるまで他の操作ができなくなるダイアログのことです。
一方、ダイアログを表示したままでも、他の操作ができるのがモードレスダイアログです。
MFCを使ったプログラムの場合、モーダルダイアログとして表示しているのに、モードレスっぽく動作してしまう方法が存在します。
非常にバグっぽいのですが。
その方法は……
- ある画面(画面A)からモーダルダイアログ(ダイアログB)を表示する。
- ダイアログBからモードレスダイアログ(ダイアログC)を表示する。
この時、CDialog::Create()
の第2引数(pParentWnd
:親画面)は指定しない(デフォルト引数でNULLになる)。 - ダイアログCを閉じる。
すると、モーダルダイアログBが表示中なのに、画面Aの操作が出来てしまいます。
Visual C++ 6 と Visual C++ .NET 2003 と Visual C++ 2008 で確認しました。
MFCを使わずに同じ様なことを実装しても、この挙動は起こらないので、MFCだけの特徴だと思います。
今日の一冊 | |
|
2009-09-27 08:01
nice!(0)
コメント(0)
トラックバック(0)
コメント 0