浅谈VC中CDialog的创建,存活与销毁。
来源:互联网 发布:华为网络通信设备介绍 编辑:程序博客网 时间:2024/05/16 04:36
VC中Dialog的有两种:模态(model)和非模态(modelless)
1)模态Dialog通过构造函数CDialog去创建的,销毁是有系统销毁(Dialog对象不是new出来),当然new出来的类对象必须手动去delete
CDialog( );CDialog(LPCTSTR lpszTemplateName,CWnd* pParentWnd = NULL);CDialog(UINT nIDTemplate,CWnd* pParentWnd = NULL );
CDialog *m_pdlg = new CDialog(IDD_DLGADDR, this);//DD_DLGADDR资源Idm_pdlg->DoModal();delete m_pdlg;//CDialog类指针的释放。
class CToolDlg : public CDialog{// Constructionpublic:CToolDlg(CWnd* pParent = NULL):CDialog(CToolDlg::IDD, pParent) // standard constructor {} enum { IDD = IDD_DLGADDR };}CToolDlg dlg;dlg.DoModal();
2)非模态Dialog通过CDialog创建空的类对象,然后调用Create函数;销毁时要重载Dialog中 OnCancel和PostNcDestroy函数
CMyDialog* pDialog;void CMyWnd::OnSomeAction(){ //pDialog initialized to NULL in the constructor of CMyWnd class pDialog = new CMyDialog(); //Check if new succeeded and we got a valid pointer to a dialog object if(pDialog != NULL) { BOOL ret = pDialog->Create(IDD_MYDIALOG,this); if(!ret) //Create failed. AfxMessageBox("Error creating Dialog"); pDialog->ShowWindow(SW_SHOW); } else AfxMessageBox("Error Creating Dialog Object");}
void CMyDialog::OnCancel(){ DestroyWindow();//窗口的销毁 //CDialog::OnCancel();//屏蔽基类的OnCancel,因为基类的OnCancel调用了EndDialog函数,这是模态Dialog的。}void CMyDialog::PostNcDestroy(){ CDialog::PostNcDestroy(); delete this;//类对象的销毁}
体会:模态Dialog,当DoModa()l函数执行中才会有窗口句柄m_hWnd的存在,DoModel函数执行完,系统就会释放窗口句柄m_hWnd,(类对象不一定此刻释放,但毕竟还是系统来完成);非模态Dialog,当Create后窗口句柄m_hWnd就存在,在需要的时候show出窗口。它的句柄销毁依靠程序员调用函数DestroyWindow()来完成,类对象销毁必须手动delete。
- 浅谈VC中CDialog的创建,存活与销毁。
- 创建一个CDialog对话框与对话框销毁
- CDialog 非模态对话框的创建和销毁
- 内核中线程的创建与销毁
- VC 中窗口的销毁
- VC 中窗口的销毁
- VC 中窗口的销毁
- CDialog::Create()创建非模态对话框框,若未销毁造会成内存泄露的解决办法
- 对象的创建与销毁
- session的创建与销毁
- 对象的创建与销毁
- CDialog中创建CView窗口
- CDialog中创建CView窗口
- 浅谈函数的调用,栈帧的创建和销毁
- 非模态对话框的创建与销毁
- APR内存池的创建与销毁
- Montouch多视图的创建与销毁
- 非模态对话框的创建与销毁
- C++学习路线
- struts1和struts2比较
- jq 表格隔行变色
- 搭建arm-linux-gcc交叉编译环境
- 【郭林专刊】重启开源,分享无限--微软面试187题精选 .
- 浅谈VC中CDialog的创建,存活与销毁。
- 黑马程序员_银行调度系统笔记
- Option Menu && Context Menu的使用
- 一个被网易抛弃的孤儿~~~~~~~
- lua脚本语言
- 35岁前程序员要规划好的四件事,健康居首位
- 用DirectShow实现QQ的音视频聊天功能
- MFC 子线程消息循环的实现
- gcc 笔记 C Dialect Options