插入Dialog
IDD—Test
2.给
此对话框,关联一个类
3.在希望出现对话框的函数中添加代码:
(比如单击按钮d出对话框,则在单击按钮的消息函数实现中添加代码)
类名
dlg
dlg.DoModal()
//这个是模式对话框
【模态】
void
CDialogView::OnViewModaldialog()
{
//
TODO:
Add
your
command
handler
code
here
CDialogModal
cDlg
cDlg.DoModal()
}
【非模态】
void
CDialogView::OnViewModallessdialog()
{
//
TODO:
Add
your
command
handler
code
here
//如果指针指向NULL,说明对话框还没有创建,则动态创建
if(m_pModallessDlg==NULL)
{
m_pModallessDlg=new
CDialogModalless
m_pModallessDlg->Create(IDD_MODALLESS_DIALOG,this)
}
//显示非模态对话框
m_pModallessDlg->ShowWindow(SW_SHOW)
}
创建非模态的对话框用MFC可以创建非模态的对话框,只是创建方式不同,模态对话框用
dlg.DoModel()调用,而非模态对话框要用create函数创建调用。
/*假设IDD_TEST_DLG为已经定义的对话框资源的ID号*/
CTestDlg
*dlg=new
CTestDlg
dlg->Create(IDD_TEST_DLG,NULL)
dlg->ShowWindow(SW_SHOW)
在上面的代码中新生成了一个对话框对象,而且在退出函数时并没有销毁该对象。因为如果此时销毁该对象(对象被销毁时窗口同时被销毁),而此时对话框还在显示就会出现错误。那么这就提出了一个问题:什么时候销毁该对象。可以用如下方法:
在对话框退出时销毁自己:在对话框中重载OnOK与OnCancel在函数中调用父类的同名函数,然后调用DestroyWindow()强制销毁窗口,在对话框中映射WM_DESTROY消息,在消息处理函数中调用delete
this强行删除自身对象。相关代码如下:
void
CTestDlg1::OnOK()
{
CDialog::OnOK()
DestroyWindow()
}
void
CTestDlg1::OnCancel()
{
CDialog::OnCancel()
DestroyWindow()
}
void
CTestDlg1::OnDestroy()
{
CDialog::OnDestroy()
delete
this
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)