mfc 怎样创建对话框?

mfc 怎样创建对话框?,第1张

在资源文件夹下面 dialog附近邮件单击 找到insert 选择dialog 点击new 然后在类向导里面 选择creat a new class 选择ok 并取名假设为 dialog 然后在你已建好的窗口上面插一个按钮 按钮的相应函数为\x0d\x0a dialog *CreatServer=new dialog\x0d\x0a CreatServer->DoModal()\x0d\x0a 这是模态对话框\x0d\x0a 非模态的用函数 CDialog::creat()实现

1.在资源选项卡中

插入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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7875925.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存