MFC 模态和非模态对话框

最近在程序的对话框调用中,只知道用.domodal来调用子对话框,但是当别人问我会不会模态和非模态时,就傻掉了,还有这个啊疑问??呵呵,于是赶紧查了一下资料,总结了一下,与大家分享吧:

 

1) 模态和非模态区别  

      当显示一个模态对话框时,应用程序会暂停,即点击其他菜单或者别的不会执行,会出现警告的那种声音。直到关闭模态对话框,应用程序才会继续执行其他任务。

 

2) 模态对话框的显示和关闭 

 CDialog::DoModal和CDialog::EndDialog  

  程序示例  void CMyboleView::OnDiadlog() 

{        // TODO: Add your command handler code here   

     CTestDlg dlg;       

    dlg.DoModal();  }

 

3) 非模态对话框的创建 

 CDialog::Create  BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL ); 

 BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );  默认参数为NULL就是父窗口是框架类。  

  程序示例

  void CMyboleView::OnDiadlog() 

 {  // TODO: Add your command handler code here 

 CTestDlg *p_ctd= new CTestDlg();//创建对话框的对像指针 

 p_ctd->Create(IDD_READING,this);//指针调用Create()函数,ID号为对话框的. 

 p_ctd->ShowWindow(SW_SHOWNA);//()中的参数可以用来改变对话框的显示模式(具体参见MSDN中ShowWindow()函数)}

 

 

4) 非模态对话框的销毁

//对话框中:

void CTestDlg::OnCancel()

 {      DestroyWindow(); } 

 

void CTestDlg::PostNcDestroy()

 {      CDialog::PostNcDestroy();    

  delete this;}

 

如果要在点击按钮的情况下,销毁非模态对话框,只需要把按钮的事件映射到OnCancel函数即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值