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();