• DoModal 函数的用法


    转载:https://blog.csdn.net/mpp_king/article/details/79707728                        https://www.cnblogs.com/xing901022/archive/2012/11/05/2755373.html

    使用有模式对话框时在对话框弹出后调用函数不会立即返回,而是等到对话框销毁后才会返回(请注意在对话框弹出后其他窗口的消息依然会被传递)。所以在使用对话框时其他窗口都不能接收用户输入。创建有模式对话框的方法是调用CDialog::DoModal()。下面的代码演示了这种用法:  

    1.  
      CYourView::OnOpenDlg()
    2.  
      {
    3.  
      CYourDlg dlg;
    4.  
      int iRet=dlg.DoModal();
    5.  
      }

    CDialog::DoModal()的返回值为IDOK,IDCANCEL。表明操作者在对话框上选择“确认”或是“取消”。由于在对话框销毁前DoModal不会返回,所以可以使用局部变量来引用对象。在退出函数体后对象同时也会被销毁。而对于无模式对话框则不能这样使用,下节5.3 创建无模式对话框中会详细讲解。  


    你需要根据DoModal()的返回值来决定你下一步的动作,而得到返回值也是使用有模式对话框的一个很大原因。 

    使用有模式对话框需要注意一些问题,比如说不要在一些反复出现的事件处理过程中生成有模式对话框,比如说在定时器中产生有模式对话框,因为在上一个对话框还未退出时,定时器消息又会引起下一个对话框的弹出。 

    同样的在你的对话框类中为了向调用者返回不同的值可以调用CDialog::OnOK()或是CDialog::OnCancel()以返回IDOK或IDCANCEL,如果你希望返回其他的值,你需要调用  

    CDialog::EndDialog( int nResult );

    其中nResult会作为DoModal()调用的返回值

    virtual INT_PTR CDialog::DoModal();

    当dlg.DoModal()后,显示一个模态对话框,此时DoModal()函数并不返回,直到用户关闭此对话框时,DoModal才返回。如果用户点击了确定按钮,那么DoModal()函数就返回IDOK。IDOK是一个宏。

    当你CMyDlg dlg;时,对话框并没有显示,只要构造了一个CMyDlg类型的对象而已,直到用户调用DoModal(),对话框才会显示出来。

     

     

  • 相关阅读:
    116. 跳跃游戏
    182. 删除数字
    unity判断LayerMask里面是否包含你想要的Layer
    Unity Animator自动连线
    Behavior designer 行为树插件 笔记
    unity2d 完美斜坡方案
    youtube 油管视频带字幕下载
    unity资源提取工具AssetStudio
    ugui 通用页签管理器
    unity拓展编辑器入门
  • 原文地址:https://www.cnblogs.com/MCSFX/p/13175445.html
Copyright © 2020-2023  润新知