MFC创建子窗口及使用

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

猜你喜欢

转载自www.cnblogs.com/LYF-LIUDAO/p/8984343.html