|
非模态对话框的生成方法(VC++) 本文是非模态对话框的生成方法的笔记。使用非模态对话框可是VC++像VB的Form那样实现多窗口应用。 1.事先准备。创建一个对话框工程(例:Test)。在对话框上贴上一个按钮。生成这个按钮的响应函数。 void CTestDlg::OnBnClickedButton1(){ // TODO: Add your control notification handler code here } 2.创建非模态对话框的资源与类。用普通的方法创建一个普通对话框的资源与类。比如对话框的资源ID是IDD_DIALOG1,类名叫CModalessTest。 3.从父对话框CTestDlg显示非模态对话框的CModalessTest。首先用new生成CModalessTest的实体(Object)。 然后,用CDialog的成员関数Create(),以CDlgTest::IDD为参数创建非模态对话框的窗口。最後用ShowWindow()显示非模态对话框。那么改写void CTestDlg::OnBnClickedButton1()如下: #include "ModalessTest.h"void CTestDlg::OnBnClickedButton1() { CModalessTest* pDlg = new CModalessTest(); pDlg->Create(CModalessTest::IDD, this); pDlg->ShowWindow(SW_SHOW); } 4.非模态对话框实体(Object)的自动清除。非模态对话框关闭以后,要把它的实体清除。在父对话框的某处调用delete CModalessTest;是没有问题的。要是非模态对话框自己能自我删除的话更为方便,重载和改写PostNcDestroy()函数实现此功能。 例: void CModalessTest::PostNcDestroy()
{
CDialog::PostNcDestroy();
delete this;
}
|