MFC創建模態對話框和非模態對話框(2)

一:創建非模態對話框

創建過程同模態對話框,都是先添加對話框資源,添加對話框類,不同之處在於非模態對話框需要動態創建,因爲是動態創建,所以需要先定義對話框類指針;

private:
<span style="white-space:pre">	</span>CMoTaiDlg* m_MoTaidlg;
 同模態對話框,也需要在主對話框cpp中添加頭文件;

既然定義了指針,就必須得初始化,可以在主對話框的構造函數中初始化該指針;

CTwoKindDLGDlg::CTwoKindDLGDlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(CTwoKindDLGDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	m_MoTaidlg = NULL;        //初始化指針;
}


二:彈出非模態對話框

在同一個button下,改一改過程函數,就可以使對話框以非模態的方式彈出:

void CTwoKindDLGDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知處理程序代碼
	if(NULL==m_MoTaidlg)
	{
		m_MoTaidlg=new CMoTaiDlg();
		m_MoTaidlg->Create(IDD_DLG_FEIMOTAI,this);
	}
	m_MoTaidlg->ShowWindow(SW_SHOW);
}

三:回收內存

非模態對話框動態創建,所以創建完之後一定要記得回收內存;即在析構函數中銷燬指針。而程序中沒有析構函數,所以還需要自己創建;

CTwoKindDLGDlg:: ~CTwoKindDLGDlg()
{
	if(m_MoTaidlg!=NULL)
	{
		delete m_MoTaidlg;
	}
}

記得在頭文件中先聲明該析構函數即可;




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章