
DuiLib
文章平均质量分 86
森明帮大于黑虎帮
记录学习过程,分享学习心得,欢迎学习交流!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
duilib初始化无法获取控件位置(所有位置都为0)
duilib初始化无法获取控件位置(所有位置都为0)原创 2024-11-06 17:14:03 · 476 阅读 · 0 评论 -
解释Duilib_旗舰版官方代码中的浏览器嵌入关于IE内核
解释Duilib_旗舰版官方代码中的浏览器嵌入关于IE内核原创 2024-02-26 10:55:23 · 1468 阅读 · 0 评论 -
快速登录界面关于如何登录以及多账号列表解析以及config配置文件如何读取以及JsLogin模块与SdoLogin模块如何通信(4)
快速登录界面关于如何登录以及多账号列表解析以及config配置文件如何读取以及JsLogin模块与SdoLogin模块如何通信(4)原创 2023-12-08 11:11:28 · 384 阅读 · 0 评论 -
快速登录界面关于如何登录以及多账号列表解析以及config配置文件是如何读取(1)
快速登录界面关于如何登录以及多账号列表解析以及config配置文件是如何读取(1)原创 2023-12-05 10:59:38 · 190 阅读 · 0 评论 -
短信登录获取图形验证码调用过程
短信登录获取图形验证码调用过程原创 2023-11-17 10:28:29 · 493 阅读 · 3 评论 -
DuiLib中常用各种RGB颜色对照表
DuiLib中常用各种RGB颜色对照表原创 2023-11-09 11:26:36 · 1366 阅读 · 0 评论 -
DuiLib窗口样式和窗口扩展样式以及宏的解释
DuiLib窗口样式和窗口扩展样式以及宏的解释原创 2023-07-20 15:49:08 · 973 阅读 · 0 评论 -
duilib消息产生以及响应机制
win32消息产生机制duilib是基于windows的ui框架,其消息产生处理机制和windows基本一样。上图是一个窗体调用过程,和消息产生处理机制基本一致。其中**GetMessage()**方法就是从消息队列中取对应的消息,**TranslateMessage()**将消息进行预处理,**DispatchMessage()**将消息分发至窗体过程函数进行处理。在从这里我们可以知道,只要我们窗体实现了,将我们的窗口类实例指针添加到数组中。原创 2023-07-18 19:39:31 · 973 阅读 · 0 评论 -
DuiLib中创建的窗口继承窗口类WindowImplBase重写WindowImplBase的函数时候子类重写的函数什么时候调用
窗口子类继承基类,并且重写了以上函数。首先了解C++中的多态。原创 2023-07-18 14:53:20 · 418 阅读 · 0 评论 -
duilib消息类型汇总
自定义消息是应用程序开发者自己定义的消息类型,用于在不同的控件之间进行通信和传递数据。这些消息通常不是系统定义的消息,而是开发者根据自己的需求添加的。自定义消息的用途包括但不限于在控件之间传递数据、触发特定的操作等。当控件接收到自定义消息时,它会调用对应的处理函数来处理这些消息。事件消息是在DuiLib中预定义的消息类型,用于响应用户的交互操作,如鼠标点击、键盘输入等。当用户在控件上进行操作时,DuiLib会生成相应的事件消息,并传递给控件的父控件,直到找到一个处理该事件的控件为止。原创 2023-07-18 11:25:50 · 1057 阅读 · 0 评论 -
DuiLib窗体之ShowWindow()和ShowModal()函数分析以及duilib控件的一些属性
DuiLib窗体之ShowWindow()和ShowModal()函数分析以及duilib控件的一些属性原创 2023-07-18 10:40:40 · 1598 阅读 · 0 评论 -
duilib绝对定位与相对定位
duilib中窗口,布局,控件等在屏幕上的显示位置都是按照配置好的xml文件规则显示的,每个显示元素的位置大小也需要显式指定,才能呈现出更好看的界面效果,显示元素的位置有两种配置规则,即绝对位置(Duilib中float属性为true时)与相对位置(float属性为false时)。原创 2023-07-17 20:07:52 · 654 阅读 · 0 评论 -
duilib源码修改之WindowImplBase类OnCreate函数
函数中触发,而且在次函数中还会设置窗口的初始位置,由于设置窗口位置**(SetWindowPos)如上面代码所示,改用**::GetWindowRect(*this, &rcWindow)**替换。函数中最后四个参数无效,输入也不会生效,这是由于窗口创建已经在基类。函数中指定倒数第三个与第四个参数设置窗体的左上角初始位置,设置为。0**,即窗口的位置的左上角坐标始终为**(0,0)**。则跟修改之前一样,但是可以支持自定义修改。代码如下:(下面已经做了修改,注释部分)原创 2023-07-17 19:08:52 · 350 阅读 · 0 评论 -
duilib的通用窗口类WindowImplBase
duilib程序中,编写自己的窗口类一般的继承关系有两种,一种是继承自CWindowWndINotifyUI,而第二种方式是继承自duilib封装好的通用窗口类。原创 2023-07-17 18:59:19 · 500 阅读 · 1 评论 -
DuiLib的基本框架的中的函数解析
国内首个开源 的directui界面库,它提供了一个所见即所得的开发工具——UIDesigner,它只有主框架窗口,其余的空间全部采用绘制的方式实现,所以对于控件来说没有句柄和窗口类等内容,它通过UIDesigner工具将用户定义的窗口保存在xml文件中,在创建窗口时读取xml文件中的内容,来绘制相应的控件。目前有许多界面采用duilib编写,大家可以去网上搜集相关资料。设置进程的实例句柄,这个值会在注册窗口类时使用。原创 2023-07-17 15:51:49 · 1671 阅读 · 0 评论 -
Duilib 父窗口无效化和消息传递
控件设为可见,这样父窗口变灰,告诉用户父窗口不可用,还原后再设为不可见,这样就实现了一个父窗口无效化的反馈。之间有一定的逻辑需要,比如当子窗口弹出时,让父窗口无法处理父窗口内的控件的消息,即将父窗口无效化,直到子窗口关闭再恢复。在建立子窗口的前面将父窗口无效化,然后在子窗口的WM_CLOSE消息处理中使父窗口还原,并获得焦点。控件,让他覆盖整个父窗口,初始化为不可见,背景颜色设置为半透明的黑色。建立多个窗口,我们可以定义多个窗口类来一一对应。这样就实现了父窗口的无效化,还可以给用户一点反馈。原创 2023-07-14 14:56:46 · 389 阅读 · 0 评论 -
DuiLib的消息传递机制
有通过坐标查找的,有用名字的,还有用控件属性的。函数里的第一个参数是要查找的控件的父控件,也可以是更上层的父控件。在用第三个函数的时候需要注意,它的遍历子控件的方式是深度优先遍历,如果需要用到。msg.pSender这个指针就是获得消息的控件指针,调用GetType()这个函数获取消息的类型,是单击还是右键等等,然后调用GetName这个函数去对应控件,做相应的处理。),通过这个对象管理对应的控件,我们还可以查找窗口里的任意控件。来使用查找方法,然后用查找子控件的方式获得要处理的控件的指针,OK了。原创 2023-07-14 14:45:58 · 353 阅读 · 0 评论 -
常用的DuiLib的消息类型
还提供了更多的消息类型,可以根据具体需求选择和使用。消息类型示例,实际上。原创 2023-07-14 10:53:13 · 745 阅读 · 0 评论 -
DuiLib中的list控件以及ListContainerElement控件
在 Duilib 中,List 控件用于显示一个垂直滚动的列表,而 ListContainerElement 控件则用于作为 List 控件中的每个元素。下面是它们的基本使用方法。原创 2023-07-13 14:28:00 · 3111 阅读 · 1 评论 -
DuiLib中的Notify(TNotifyUI& msg)函数
函数是框架提供的一种消息传递机制,具体的使用方式和参数可以根据实际需求进行调整和扩展。它用于向控件发送通知消息,以便控件可以根据收到的消息进行相应的处理。是用于传递额外参数的整型值,可以根据具体情况进行设置。表示通知消息的类型,可以根据需要选择合适的类型。根据不同的类型,可以使用。首先,将十六进制数的每个位数与对应的权重相乘。时,当一个控件需要发送通知消息时,可以调用。函数)中,可以捕获并处理通知消息。因此,0x1B的十进制表示为27。函数,可以实现在DuiLib中的。函数,传递相应的通知码和参数。原创 2023-07-11 10:48:12 · 870 阅读 · 0 评论 -
DuiLib编写中碰到的一些问题持续更新
在DuiLib中,函数是用于处理窗口消息的关键函数。它位于类中,是一个虚函数,可以在派生类中进行重写,以实现自定义的消息处理逻辑。参数解释:uMsg:表示收到的消息类型,比如WM_PAINT、WM_KEYDOWN等。wParam:表示消息的附加参数,具体含义根据消息类型而定。lParam:表示消息的附加参数,具体含义根据消息类型而定。返回值:LRESULT:表示消息处理的结果,通常是0或者一个非零值。在派生类中重写HandleMessage函数时,可以根据uMsg的不同值来处理不同的消息。原创 2023-07-10 14:44:34 · 463 阅读 · 0 评论 -
2、DuiLib的入门程序以及资源压缩打包
有的使用的就是执行程序目录下的文件夹,而有的使用的是一个压缩包(有可能加密),还有的就是一个单独的执行文件复制到任意位置运行同样可以有绚丽的界面。你不一定要按着我的修改,符合你自己的使用习惯即可。表示此次插入图片,x表示图片名称,y表示此图片包含几张字图片(可不填,默认值1),z表示当前使用的字图片id(可不填,默认值0)。这是其中一种方法,比较简单,还有其他的方法来实现同样的功能,类似下面即将介绍的方法,由于。这是其中一种方法,比较简单,还有其他的方法来实现同样的功能,类似下面即将介绍的方法,由于。原创 2023-07-06 20:00:00 · 1851 阅读 · 0 评论 -
8、DuiLib创建子窗口
此时主窗口就会显示一个关于按钮了,注意我们也修改了父容器的宽度,因为比之前多了一个按钮,我们要算上按钮宽度和间距增大父容器的宽度。一个大规模的应用不可能只有一个窗口,之前我们的案例都是在一个窗口实现的,接下来我们实现一个关于窗口,来介绍如何通过。接下来做关于按钮的响应,首先添加一个按钮的成员变量来接收关于按钮,然后再。方法判断当前点击的是否是关于按钮,如果是那么就显示关于窗口。窗口还是保留标题栏,但只有一个关闭按钮了,并且关闭按钮的名字我修改成了。的案例了,所以这里就不多说了,直接将写好的。原创 2023-06-20 16:50:40 · 826 阅读 · 0 评论 -
7、DuiLib动态创建控件
在实际业务场景中,并不是所有界面元素都可以通过 XML 预先定义好的,有时候我们需要根据数据库或者服务器返回的数据动态的在界面上创建一些控件。本文将介绍两种方式来动态创建控件的方法,一种是使用纯代码方式,另外一种是使用已经构建好的 XML 来动态创建控件。之前创建控件的方式都是在 XML 写好,设置好显示位置,运行程序后就自动显示出来了。实际一个控件对应的就是 DuiLib 中的一个类,我们只需要在代码中实例化一个控件类对象,设置好显示位置和控件的样式,并插入到指定的容器内就可以显示出来了。假设我们要在窗口原创 2023-06-20 14:30:04 · 1240 阅读 · 0 评论 -
Duilib中禁止一个窗口双击最大化
开发了一个窗口,比如是登录窗口,那么这个窗口的窗口的双击最大化就毫无意义,甚至带来灾难,我们就要明确禁止这样的行为。我们应该明确,一个窗口创建的时候就赋予了它一些属性,那我们就首先看看如何创建窗口的,即Create函数。:UI标准框架窗体样式(标题栏、边框、图标、标题、最大、最小按钮、关闭按钮)。因此 如果我们想要禁止双击最大化,那再创建窗口的时候就使用。:UI对话框窗体样式扩展窗体样式宏。:工具栏窗口样式+模式对话框样式。的第三个参数是宏定义,可以看出是跟。:容器样式,无任何样式。:UI窗体子控件样式。原创 2023-06-16 11:24:41 · 1550 阅读 · 0 评论 -
6、DuiLib控件消息响应处理
修改完成后最小化、最大化、还原三个按钮都可以正常工作了,但是关闭按钮点击后并不能完全退出程序,而仅仅是把程序隐藏了,这主要原因是当我们点击关闭按钮时调用的是父类的。另外我自己还发现了两个小问题,窗口的标题栏双击是无法最大化的,这个解决很简单,在。这种方式同样可以实现处理控件的消息功能,如果对委托的函数指针加以改造,还可以使用 C++11 的 lambda 表达式来实现具体的处理函数功能。方法,将最小化控件隐藏了。函数中判断了一下消息的类型,如果是鼠标点击那么我们获取一下触发的控件名称,根据名称判断是不是。原创 2023-06-16 15:23:16 · 1921 阅读 · 0 评论 -
5、DuiLib组件结构的初探
更多情况下我们是通过用户操作窗口的事件来操作控件,接下来我们就来介绍,如果响应用户操作窗口的消息和事件,顺带着就把如何操作控件的状态就一并介绍了。提供了很多丰富的控件类型,但是最上面图中介绍的控件已经不全了,毕竟是很久以前的图片了,我们不能以这个为标准,一定要自己去翻翻代码。,我们可以通过窗口管理器查找指定名称的控件并把它保存下来转换为指定控件对象,然后调用其对象的相应方法来控制控件的状态。中我们需要的控件,并把它转换成真正的控件对象,首先我们要给我么需要控制的控件名个名字。方法,借助控件名称找到了控件,原创 2023-06-16 15:24:38 · 441 阅读 · 0 评论 -
1、DuiLib的编译和运行
没关系,我们直接复制一份 Duilib.vcxproj.filters。中看到的文件目录结构,静态库和动态库都使用一样的目录树即可。**(这里已经修改过的)**但是细心的人可能发现了,仅有一个 .vcproj。文件改名为 Duilib_Static.vcxproj.filters。在官方的代码中有一个 DuiLib_Static.vcxproj。的工程文件,这就是 DuiLib 的静态库编译的工程。的项目文件,没有 .filters。目录下,生成了各种**.exe。.exe**同级目录即可。原创 2023-06-16 00:30:00 · 1646 阅读 · 0 评论 -
4、DuiLib了解 XML使用和布局控制
通过上一篇的学习我们可以制作一个简单的布局了,但是没有控件的窗口做再好的布局有什么用呀。赶紧找些素材,我们来做一个标准的 Windows 窗口。并通过这个窗口我们来了解一下布局中一些细微细节的控制。一个常规的 Windows 窗口应该有一个像样的标题栏,标题栏左侧包含窗口的 logo 和窗口的名称,右侧有最小化、最大化和关闭按钮,还有一些窗口可能会有设置啊等等类似的按钮。我们到网络上找一些素材,亲自动手制作一个窗口。素材我们可以到 Iconfont-阿里巴巴矢量图标库 去自己下载。通过搜索功能搜索一个你喜欢原创 2023-06-15 18:49:58 · 1758 阅读 · 0 评论 -
3、DuiLib了解xml的使用和布局
之所以没提前介绍它主要是它使用的场景比较少,它下面的子空间都是默认扩充整个容器的,这也就会导致所有子控件重叠在一起,除非你想实现这种效果,否则可能真的用不到它。的简单介绍,这两种布局是使用频率最高的了,基本上界面的布局需求都可以通过这两种布局来实现了。是一个最外部的布局,我们要写窗体的内部构成,都是基于这个最基本的窗体布局系统来完成的。当然你并不一定必须用。描述,这个必须要有的,不了解的同学可以搜索一些 XML 相关的介绍教程,十几分钟就看的差不多了。来做最外部的布局,这要看你窗口的实际布局效果。原创 2023-06-15 17:06:39 · 2303 阅读 · 0 评论 -
基于NIM_DUILIB_FRAMEWORK框架的网易云信demo:NIM_PC_DEMO
网易云信 PC IM Demo 是基于制作的即时通讯示例程序,UI 库使用制作。原创 2023-06-13 19:19:29 · 2795 阅读 · 2 评论