MFCを使用して親ダイアログ内に子ダイアログを埋め込む方法を示すtutorialが出ました。私はVisual Studio 2015を使用しています。私の設定は以下の通りです。 Visual Studio MFCアプリケーションウィザードを使用してMFCApplication3
という新しいMFC Visual C++プロジェクトを作成するには、ダイアログベースのアプリケーションを選択します。共有DLLでMFCを使用します。ボイラープレートコードを使用すると、シンプルなThick Frame Dialogがあり、最大化または最小化はできません。MFC:Emdedded子ダイアログが親ダイアログ内に表示されない
私のリソースビューでは、メインダイアログを編集するためにダイアログエディタに行きます。私は中央に空白の領域を持つ画像コントロールを追加し、それをIDC_STATIC
と命名します。これは、私が埋めたい子ダイアログのプレースホルダとして使われます。
、私は新しいダイアログを作成します。それは次のようになります。私はそれをIDD_CHILDと呼ぶ。私はいくつかのコンポーネントを追加します。それは次のようになります。
は今バックソリューションエクスプローラで、私は、MFCクラスを追加するために選択し、クラスの追加ウィザードを使用してクラスを追加します。クラス名はCChildDialog
で、基底クラスはCDialog
であり、既に生成されたIDD_CHILD
をダイアログIDとして使用します。 .cpp
と関連するファイル.h
を生成します。
CChildDialog::CChildDialog(CWnd* pParent /*=NULL*/)
: CDialog(IDD_CHILD, pParent)
{
Create(IDD_CHILD, pParent);
}
今、私はプロジェクトを作成したときに自動的に生成されたダイアログのコードを変更:コンストラクタになるようCChildDialog
のコンストラクタでは、私はCreate
関数の呼び出しを追加します。 CMFCApplication3Dlg.h
には、と、#include
と呼ばれるタイプCChildDialog*
のメンバーであるprivate
を追加します。 CMFCApplication3Dlg.cpp
では、私が前return
ステートメントにOnInitDialog
機能にこれを追加します。
CRect rc;
GetDlgItem(IDC_STATIC)->GetWindowRect(rc);
ScreenToClient(&rc);
m_childDlg = new CChildDialog(this);
m_childDlg->MoveWindow(rc);
今、私はそれを実行し、ソリューションをビルドし、それは最初の画像でないように見えます。子ダイアログの空白のプレースホルダスポットですが、子ダイアログはありません。私は何が間違っていますか?
は 'false'に「目に見える」デフォルト:私は私の埋め込まれたダイアログを取得します私見では – YePhIcK