Doc / View/Frame実装であるMFCアプリケーションがあります。1つのダイアログは、(メニューオプションから)オンデマンドでポップアップするモードレスダイアログとして実行されています。モードレスダイアログをMDI子ビューに追加しようとしています。基本的に、リソースファイルからテンプレートをロードし、MDIのテンプレートリストに追加する新しいトリオ(doc / view / frame)でCViewの子として作成します。
派生したCMyViewクラスでいくつか試してみました。
void CMyView::OnInitialUpdate()
{
m_ListDialog = new Dialogs::CListDialog( m_config, this );
m_ListDialog->Create( Dialogs::CListDialog::IDD, this );
m_ListDialog->ShowWindow( SW_SHOW );
}
SetWindowPos、ModifyStyle(WS_CHILD、WS_VISIBLE、DS_CONTROL)を呼び出してみました。リソースファイルを変更して、子を設定し、手動で制御しようとしました。
Createを呼び出すたびに、ListDialogのm_hWndは0のままになります。これは、正しく作成されていないことを示しています。m_hWndが0であるため、SetWindowPos()またはShowWindow()の呼び出しは失敗します(デバッグアサーションは失敗します)。
モードレスダイアログを構築、作成し、MDIアプリケーションでCMyViewの子として表示するには、何をする必要がありますか?