1、在资源视图对话框中新建一个Dialog
2、进入Dialog视图界面,右键单击添加类,此步骤是添加属于此对话框的类,就像主窗口的类对应于主对话框一样的关系
3、添加子对话框的初始化函数 界面上右击->添加虚函数OnInitDialog,把需要初始化的东西放在里面
例如:新建的一个子对话框类名叫MFCListDlg
MFCListDlg.h
1 #pragma once 2 3 4 // MFCListDlg 对话框 5 6 class MFCListDlg : public CDialogEx 7 { 8 DECLARE_DYNAMIC(MFCListDlg) 9 10 public: 11 MFCListDlg(CWnd* pParent = NULL); // 标准构造函数 12 virtual ~MFCListDlg(); 13 14 // 对话框数据 15 enum { IDD = IDD_LISTTEST }; 16 17 protected: 18 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 19 20 DECLARE_MESSAGE_MAP() 21 protected: 22 HICON m_hIcon; 23 public: 24 virtual BOOL OnInitDialog(); 25 };
MFCListDlg.cpp
1 // MFCListDlg.cpp : 实现文件 2 // 3 4 #include "stdafx.h" 5 #include "MFCTest.h" 6 #include "MFCListDlg.h" 7 #include "afxdialogex.h" 8 9 10 // MFCListDlg 对话框 11 12 IMPLEMENT_DYNAMIC(MFCListDlg, CDialogEx) 13 14 MFCListDlg::MFCListDlg(CWnd* pParent /*=NULL*/) 15 : CDialogEx(MFCListDlg::IDD, pParent) 16 { 17 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 18 } 19 20 MFCListDlg::~MFCListDlg() 21 { 22 } 23 24 void MFCListDlg::DoDataExchange(CDataExchange* pDX) 25 { 26 CDialogEx::DoDataExchange(pDX); 27 } 28 29 30 BEGIN_MESSAGE_MAP(MFCListDlg, CDialogEx) 31 END_MESSAGE_MAP() 32 33 34 // MFCListDlg 消息处理程序--重载的对话框初始化函数 35 BOOL MFCListDlg::OnInitDialog() 36 { 37 CDialogEx::OnInitDialog(); 38 39 SetIcon(m_hIcon, TRUE); // 设置大图标 40 SetIcon(m_hIcon, FALSE); // 设置小图标 41 42 CenterWindow();//将窗口显示在正中央 43 44 return TRUE; 45 }
4、在主对话框中使用子对话框
①在主对话框的类中建立一个子对话框的对象
MFCListDlg m_ListDlg;
②在主对话框的OnInitDialog初始化函数中添加创建窗口语句
m_ListDlg.Create(MFCListDlg::IDD, this);
③在需要使用的地方使用语句
m_ListDlg.ShowWindow(SW_SHOW);
④在需要销毁窗口的地方使用语句
m_ListDlg.DestroyWindow();