zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Duilib学习笔记《04》— 窗体显示

笔记学习 显示 04 窗体
2023-09-27 14:27:58 时间

在工程中的stdafx.h头文件中添加上述代码。当然,也并不一定非要在stdafx.h文件中添加,根据自己工程的实际情况进行设置即可。


二. 窗体类

在duilib中,所有的窗口均继承自CWindowWnd类,在CWindowWnd类中由虚函数HandleMessage来处理Windows消息(如WM_CREATE、WM_SIZE等等),所以对于本例的窗体类,同样需要继承CWinowWnd,同时窗体类中需要重写虚函数HandleMessage用于Windows消息的处理。

而对于duilib,我们此时更关心是界面元素是如何创建显示出来的。实际上,在Create创建窗体类时会触发WM_CREATE消息,这个消息也就都由窗体类中的HandleMessage函数来处理,具体可查看示例代码窗体类中该函数。WM_CREATE消息对应的消息处理函数OnCreate:


LRESULT CMainWndDlg::OnCreate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL bHandled )
    CControlUI* pRoot = builder.Create(_T("DemoSkin.xml"), (UINT)0, NULL, m_PaintManager);  // 核心:加载XML并动态创建界面元素
    CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath()); // 指定资源路径
    pMainDlg- Create(NULL, _T("Demo窗体"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);      // 注册窗口类与创建窗口

在入口函数中设置相关初始化,然后创建窗口,这样一来,编译运行即可显示对应的窗口。


四. 额外说明:XML加载

(注:这里知识粗略提一下,具体的在Duilib源码分析系列再具体说明)

实际上,经过上述操作后就已经可以显示出界面效果了。但这里,对第二步中关于XML文件的加载额外补充说明一下。

CPaintManagerUI::窗口消息及图形绘制管理器类。 CDialogBuilder: 创建控件类,分析脚本并用递归方式(_Parse函数)创建所有控件实例。

在m_pm.AttachDialog操作中,duilib中内部处理:

- InitControls (初始化控件)-  FindControl-  __FindControlFromNameHash- pManager- m_mNameHash.Insert(把控件插入到Hash中)
Qt编写自定义控件48-面板窗体控件 很多时候需要有一个控件,能够替代容器控件,自动容纳多个widget,自适应宽高,然后提供滚动条功能,这就必然需要用到QScrollArea控件,可设置各个子面板的间距等,也在很多系统中用到,比如温湿度设备面板,有几百个温湿度设备,需要一个容器放置,自动产生滚动条,可以设置面板的固定宽高或者自适应拉伸,其实就是放了表格布局+弹簧来设置。
窗体界面控件源码解析 这是我早期自己编写的一段代码,注释不是很详细,只是对必要部分做了简短说明。现在把所有的源码发布出来,对希望对这方面编程感兴趣的朋友提供可参考的资料
WPF 自定义窗口关闭按钮 原文:WPF 自定义窗口关闭按钮 关闭图标设计主要涉及主要知识点: 1、Path,通过Path来画线。当然一般水平、竖直也是可以用Rectangle/Border之类的替代      一些简单的线条图标用Path来做,还是很方便的。
WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox 原文:WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接。
WPF用ShowDialog()弹出窗体时控制该窗体的显示位置,并传值回父窗体 原文:http://blog.csdn.net/kiss0622/article/details/5852153 1.父窗口代码 Window1.xaml.cs private void Button_Click(object sender, RoutedEventArgs e...