对话框分类
模式对话框(假)/无模式对话框
无模式对话框架构使用
参与架构的类:
CDialog/CWinApp
代码书写
- 添加对话框资源
- 定义一个自己的对话框类,管理对话框资源,派生自CDialog或CDialogEx均可
# include<afxwin.h>
#include"resource.h"
class CMyDlg :public CDialog {
DECLARE_MESSAGE_MAP()
public:
void OnLjOK();
void OnLjCancel();
};
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
ON_COMMAND(IDOK,OnLjOK)
ON_COMMAND(IDCANCEL,OnLjCancel)
END_MESSAGE_MAP()
void CMyDlg::OnLjOK() {
//CDialog:; OnOK();//只能将无模式对话框隐藏,并没有销毁
::DestroyWindow(this->m_hWnd);
}
void CMyDlg::OnLjCancel() {
//CDialog::OnCancel();
this->DestroyWindow();
}
class CMyWinApp :public CWinApp {
public:
virtual BOOL InitInstance();
};
BOOL CMyWinApp::InitInstance() {
CMyDlg* pdlg = new CMyDlg;
pdlg->Create(IDD_DIALOG1);//创建无模式对话框
m_pMainWnd = pdlg;
pdlg->ShowWindow(SW_SHOW);
return TRUE;
}
CMyWinApp theApp;
theApp的构造:
执行过程
模式对话框(假)
代码书写:
添加对话框资源
定义一个自己的对话框类,管理对话框资源,派生自CDialog或CDialogEx
#include<afxwin.h>
#include"resource.h"
class CMyDlg:public CDialog {
public:
enum{IDD=IDD_DIALOG1};
CMyDlg():CDialog(IDD) {
}
};
class CMyWinApp :public CWinApp {
public:
virtual BOOL InitInstance();
};
BOOL CMyWinApp :: InitInstance() {
CMyDlg dlg;
m_pMainWnd = &dlg;
dlg.DoModal();
return true;
}
CMyWinApp theApp;