一:創建非模態對話框
創建過程同模態對話框,都是先添加對話框資源,添加對話框類,不同之處在於非模態對話框需要動態創建,因爲是動態創建,所以需要先定義對話框類指針;
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;
}
}
記得在頭文件中先聲明該析構函數即可;