1. void CMainDlg::DoTask()
  2. {
  3. CTaskDlg * pDlg = NULL;
  4. pDlg = new CTaskDlg(XML_FILE_NAME_TASK_DLG, WND_CLASS_NAME_TASK_DLG);
  5. //如果第一个参数是NULL, 为桌面, 子窗口就不是模态对话框
  6. pDlg->Create(this->m_hWnd, MAIN_RORG_DISP_NAME, UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
  7. pDlg->CenterWindow();
  8. pDlg->ShowModal(); ///< 弹出的是模态窗口
  9. }

pDlg->Create 的第一个参数,开始写成了NULL, 子窗口弹出后, 还可以操作主窗口.

因为要弹出模态对话框, 跟进 pDlg->ShowModal(),  看到了duilib禁止主窗口的代码,  才想到第一个参数应为父窗口窗口句柄.

可以看出, 当要弹出非模态窗口时, 可以将pDlg->Create 的第一个参数 填成 NULL.

[cpp] view plaincopy
  1. UINT CWindowWnd::ShowModal()
  2. {
  3. ASSERT(::IsWindow(m_hWnd));
  4. UINT nRet = 0;
  5. HWND hWndParent = GetWindowOwner(m_hWnd); ///< 如果子窗口创建时,参数1为NULL, 这里得到的 hWndParent 就为 NULL
  6. ::ShowWindow(m_hWnd, SW_SHOWNORMAL);
  7. ::EnableWindow(hWndParent, FALSE); ///< 当 (NULL == hWndParent) 时, EnableWindow 不生效, 导致弹出的是非模态窗口.
  8. MSG msg = { 0 };
  9. while( ::IsWindow(m_hWnd) && ::GetMessage(&msg, NULL, 0, 0) ) {
  10. if( msg.message == WM_CLOSE && msg.hwnd == m_hWnd ) {
  11. nRet = msg.wParam;
  12. ::EnableWindow(hWndParent, TRUE);
  13. ::SetFocus(hWndParent);
  14. }
  15. if( !CPaintManagerUI::TranslateMessage(&msg) ) {
  16. ::TranslateMessage(&msg);
  17. ::DispatchMessage(&msg);
  18. }
  19. if( msg.message == WM_QUIT ) break;
  20. }
  21. ::EnableWindow(hWndParent, TRUE);
  22. ::SetFocus(hWndParent);
  23. if( msg.message == WM_QUIT ) ::PostQuitMessage(msg.wParam);
  24. return nRet;
  25. }

duilib : 模态窗口相关推荐

  1. java 非模态_Qt 之 模态、非模态、半模态窗口的介绍及 实现QDialog的exec()方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/GoForwardToStep/arti ...

  2. php模态窗口,php – 如何在yii2中的模态窗口中使用pjax更新小部件

    我在一个模态窗口中有两个ActiveForms,在提交第一个表单后,我需要更新第二个表单并保持模态. 据我所知,pjax可以处理,但无法让它正常工作. 在_form.php中,我有ActiveForm ...

  3. duilib 子窗口位置_duilib绝对定位与相对定位

    前言 duilib中窗口,布局,控件等在屏幕上的显示位置都是按照配置好的xml文件规则显示的,每个显示元素的位置大小也需要显式指定,才能呈现出更好看的界面效果,显示元素的位置有两种配置规则,即绝对位置 ...

  4. 移动端模态窗口的滚动和橡皮筋问题解决方案

    1.什么是模态窗口[浮层]? 模态窗口就是用户只能与该窗口进行交互,而其他用户界面收不到输入信息.只有关闭该窗口后,其他界面才能与用户交互,且仍可以读取模态窗口中的信息.  其特点就是: a.用户的交 ...

  5. bootstrap 模态窗口 多重/多个弹窗滚动条补丁

    由于bootstrap的模态窗口默认不支持多次弹出, 在关闭的时候会有滚动条消失的问题. 经过观察和查看源码, 发现在开启和关闭的时候会在body上增加/减少一个"modal-open&qu ...

  6. 用页传值方式解决模态窗口的Response.WriteFile文件下载

    因为项目需要,使用了模态窗口,故在BasePage中的override void OnInit(EventArgs e)中加入如下内容.             Response.Clear();   ...

  7. window.showModalDialog弹出模态窗口

    [转http://www.cnblogs.com/zhouzhaokun/archive/2011/11/14/2248523.html] 在我们平时的B/S web开发当中,可能很多时候我们需要有这 ...

  8. MFC模态窗口与非模态窗口

    MFC模态窗口与非模态窗口 开发工具与关键技术:C++.VisualStudio 作者:何任贤 撰写时间:2019年07月25日 模态窗口的意思是指主窗口在打开模态窗口后,没法再操作主窗口,这就是模态 ...

  9. js中父窗口获得模态窗口的返回值

    <!--父窗口JS--> //查看审核详细 function viewFlow() {           var strBackValue= openWin('../VertifyVie ...

最新文章

  1. 办公室28个经典赞美句子【转】
  2. springcloud(四):熔断器Hystrix
  3. ubuntu12.10 64位编译Android4.1
  4. DayDayUp:哈哈,你上榜了嘛?界面新闻发布2020年中国最富1000人榜,总财富增加28%
  5. 手持光谱分光仪太贵,用什么代替?
  6. 常见的14种异常心电图的波形特点
  7. C++继承详解三 ----菱形继承、虚继承
  8. python获取网页源码被拒绝_Python3 请求网页源码 目标计算机积极拒绝,无法连接...
  9. 关于线程的停止、挂起、退出(修改)
  10. python学习之老男孩python全栈第九期_day022作业
  11. 【C语言】学习gotoxy() 与 clrscr() 函数
  12. [刀塔自走棋] 一些数据
  13. 曾经的小弟, 成了现在的大牛
  14. sw转cad映射文件_SW转CAD图层映射
  15. zkSnarks:QAP上构造零知识证明
  16. Python学习笔记(纯代码)
  17. 图片如何添加水印文字?如何设置照片水印?
  18. UR5机械臂仿真环境搭建
  19. xwiki开发者指南-编写一个XWiki组件
  20. 深度学习模型可解释性的研究进展_化盈盈

热门文章

  1. rsyslog日志管理+LogAnalyzer
  2. [python skill]利用python计算T分布下的置信区间
  3. CentOS7配置ntp服务
  4. MySQL-MHA搭建
  5. 5G-NR复用与信道编码
  6. 七年改变,如今年薪60W,分享这些年的经验总结!
  7. 前端学习 -- Css -- 盒子模式
  8. JNLP(jar包签名)
  9. QT QSqlTabModel 学习,用于从数据库中存取修改等操作。
  10. linux内核中send与recv函数详解