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

④在需要銷毀窗口的地方使用語句

m_ListDlg.DestroyWindow();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM