ネイティブ アプリでモーダルでないダイアログを作成する方法
モーダルでないダイアログを作成するには、次の手順に従ってください。
- CDialog を継承した、CMyDialog などのダイアログ クラスを作成します。
- CMyDialog クラスの見出しファイルで、CMyDialog(CWnd* pParent = NULL) のようにコンストラクタを追加します。
- CMyDialogクラスのcppファイルでコンストラクタを実装し、CDialogのコンストラクタを呼び出し、ダイアログのスタイルを非モーダルに設定する。例えば、
CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)
: CDialog(IDD_MYDIALOG, pParent)
{
// 设置对话框的样式为非模态
m_bModal = FALSE;
}
- ノンモーダルダイアログを利用したいときは、CMyDialogクラスのオブジェクトを作成してDoModal()関数を呼ぶ。例:
CMyDialog dlg;
dlg.DoModal();
- ダイアログクラスのメッセージマップに、処理するメッセージやイベントを追加する。
これによりモーダルダイアログ以外を作成できます。モーダルダイアログはメインスレッドをブロックし、他のウィンドウと同時に存在および対話することはできません。