Duilib 父窗口无效化和消息传递
来源:互联网 发布:滑坡效应 知乎 编辑:程序博客网 时间:2024/06/01 22:53
当使用duillib界面库时,我们往往需要建立多个窗口,子窗口和父窗口之间有一定的逻辑需要,比如当子窗口弹出时,让父窗口无法处理父窗口内的控件的消息,即将父窗口无效化,直到子窗口关闭再恢复。
建立多个窗口,我们可以定义多个窗口类来一一对应。我建立窗口类的时候继承的是duilib库里面封装的窗口类WindowImpBase。重载父类里的消息处理函数,就可以实现对消息的过滤。
virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);//消息处理函数
在建立子窗口的前面将父窗口无效化,然后在子窗口的WM_CLOSE消息处理中使父窗口还原,并获得焦点。代码如下:
::EnableWindow(m_hwnd , false); //父窗口无效化 CMyChildWND * pChildWindow = new CMyChildWND; //建立子窗口 m_hwnd 为父窗口句柄 pChildWindow->Create(m_hwnd , Null , UI_WNDSTYLE_DIALOG , Null); pChildWindow->CentrWindow(); PChildWindow->ShowWindow(); LRESULT HandleMessage(uMsg, wParam, lParam)//子窗口消息处理 { if(uMsg == WM_CLOSE) { ::EnableWindow(::GetParent(m_hwnd) , TRUE); // 父窗口还原 m_hwnd为子窗口句柄 ::SetFocus(::GetParent(m_hwnd));//设置焦点到父窗口 } return CWindowImpBase::HandleMessage(uMsg, wParam, lParam); }
这样就实现了父窗口的无效化,还可以给用户一点反馈。
这里我设计的是在父窗口的总布局内添加一个Control控件,让他覆盖整个父窗口,初始化为不可见,背景颜色设置为半透明的黑色。当父窗口无效化后,将Control控件设为可见,这样父窗口变灰,告诉用户父窗口不可用,还原后再设为不可见,这样就实现了一个父窗口无效化的反馈。这里就没写代码了,因为很简单就能实现。
1 0
- Duilib 父窗口无效化和消息传递
- 消息机制、子窗口和父窗口的消息传递
- 子窗口和父窗口的消息传递
- 子窗口和父窗口的消息传递
- MFC中父窗口和子窗口消息的传递
- Duilib的消息传递机制
- 控件与父窗口消息传递
- 窗口消息的传递
- C# 窗口消息传递
- 子窗口与父窗口的消息传递
- 子窗口与父窗口的消息传递
- html5 postMessage解决跨域和跨窗口消息传递
- duilib消息
- 非窗口消息传递路由
- 窗口间的消息传递
- WTL中的窗口消息传递
- C#窗口间传递消息
- duilib 响应windows原生消息和自定义消息
- Java中final用法与详解
- POJ - 2976 Dropping tests(二分 + 01分数规划)
- 人生经验 强身,炼心。攒运气,加智力。 喜欢科研,编程,电脑的人们必看
- Java中抽象类与接口
- Github创建项目并使用git将本地项目push到github
- Duilib 父窗口无效化和消息传递
- 参加英特尔杯嵌入式邀请赛暨参观英特尔公司总结
- 20160807 树的重量
- Java界面开发工具(WindowBuilder)配置使用
- 《编码》读后感
- 通关!游戏设计之道的学习笔记(四)文档
- linux--使用环境变量
- 查看服务器报错
- HDU-5794 <2016 Multi-University Training 6> A Simple Chess (Lucas + DP)