VC++中非模态对话框生成与模态有相似之处,主要不同在于模态采用DoModal函数生成,而非模态采用Create函数;而且非模态对话框生存周期较长,一般和父窗口的生存周期相同。
由于要使用Create函数,因为要在生成非模态对话框的父窗口中添加对话框类的指针,类型为(假设添加类时,非模态对话框类为CModallessDlg)CModallessDlg *,假设指针名为m_pModalessDlg。
在程序的适当处(一般在视图文件中)添加下列代码即可生成、显示非模态对话框:
CModallessDlg *m_pModalessDlg=new CModallessDlg;
m_pModalessDlg->Create(标识,this); // 标识即为所要显示的对话框的ID
m_pModalessDlg->ShowWindow(SW_SHOW);
在退出前要清除生成的非模态对话框:
delete m_pModalessDlg;
m_pModalessDlg=NULL;