DuiLib
小哈龙
一颗勇往直前的心
展开
-
duilib开发基础:创建自定义控件的过程
转载自·http://blog.csdn.net/zhuhongshu/article/details/45362751 用Duilib开发界面时,很多情况下库自带的控件不满足需求,就需要基于Duilib建立自定义控件(自绘新的控件,或者用来封装win32的子窗体,来显示视频、网页等)。 在群里经常会有刚接触Duilib的朋友问题怎么建立自己的自定义控件,或者建立的控件无法正常创建出来。我简单写一篇博客,把创建自定义控件的完整过程,和一些注意事项说明一下。另外说一...转载 2020-11-26 17:53:20 · 1102 阅读 · 0 评论 -
duilib 中list控件的扩展
概述duilib中list控件默认情况样式比较简单,无法适应众多需求场景扩展与原始list对比原始实现效果:扩展list效果:扩展list的实现1.duilib源代码的修改 ①首先修改CListHeaderItemUI类,该类表示的是list的表头,如下图:(修改源码后记得重新编译)CControlUI类属于duilib基础控件类,CContainerUI是duilib的容器基类(duilib基础框架参考),容器,其实就是可以在里面添加,嵌套其他控件的东西..原创 2020-11-25 14:55:58 · 1444 阅读 · 0 评论 -
duilib在同一个界面中(xml)加载两种自定义的list
duilib中list的自定义使用(一个界面中只有一个自定义list)list是duilib中的基本控件,是一种基本的表格,可以自定义表格的各种基本属性(颜色,边框,字体等),类似于下图的基本效果,显示的是5列7行的一个列表。xml文件的编写listtest.xml(list列表控件)<?xml version="1.0" encoding="UTF-8"?><Window size="1280,768" caption="0,0,0,36" roundcorner原创 2020-11-25 11:47:01 · 1227 阅读 · 3 评论 -
duilib加载xml以及资源文件的路径问题
一.问题描述Duilib一般通过加载写好的xml文件显示界面,xml中包含了各种资源图片以及显示属性等,最近使用时遇见两个问题,第一个就是没有设置duilib的主程序句柄,导致加载xml文件时找不到相对路径。第二个问题就是在一个程序中多个界面的xml只能放在同一个文件夹,不能一个xml一个文件夹这种方式二.解决方法问题1解决方法在创建duilib窗口之前,设置主程序句柄,如下代码,在注释1,2,3中分别表示了主程序句柄的设置过程,这一步是必要的,因为代码中继承自duilib的通用窗口类.原创 2020-09-25 14:54:21 · 11400 阅读 · 0 评论 -
使用Duilib做的程序封装成DLL的显示加载与卸载问题
一.前言: 最近在使用Duilib做一些客户端程序,有一些单一的模块也是使用Duilib做的,但是是封装成DLL的形式作为插件使用的,即使用的时候显式调用dll,加载显示,在不用的时候直接卸载dll,减少内存占用。在此过程中遇见了一些较为扯淡的问题。显示调用dll使用导出类与导出函数的选择。 作为插件加载的dll,在不需要使用的时候卸载dll时,会出现异常现象(崩溃或者其它)。 释放Dll时计数问题二.问题总结 1.显示调用dll使用导出类与导出函数的选择...原创 2020-11-06 12:01:16 · 678 阅读 · 1 评论 -
duilib的通用窗口类WindowImplBase
前言duilib程序中,编写自己的窗口类一般的继承关系有两种,一种是继承自CWindowWnd、INotifyUI、IMessageFilterUI,而第二种方式是继承自duilib封装好的通用窗口类WindowImplBaseWindowImplBase类从源码中可以看到WindowImplBase其实是继承自一般能用到的所有基础类:class DUILIB_API WindowImplBase : public CWindowWnd , public CNotifyPump原创 2020-08-06 15:37:09 · 1518 阅读 · 2 评论 -
duilib源码修改之WindowImplBase类OnCreate函数
问题:duilib默认新建窗体的左上角为屏幕左上角,无法自己输入参数修改,如下 代码:#include "stdafx.h"#include "MainFrame.h"int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int nCmdShow){ CPaintManagerUI::SetInstance(hInstance); CWndShadow:原创 2020-08-05 17:53:04 · 518 阅读 · 0 评论 -
duilib绝对定位与相对定位
前言duilib中窗口,布局,控件等在屏幕上的显示位置都是按照配置好的xml文件规则显示的,每个显示元素的位置大小也需要显式指定,才能呈现出更好看的界面效果,显示元素的位置有两种配置规则,即绝对位置(fuilib中float属性为true时)与相对位置(float属性为false时)。绝对位置(float=true)首先看一张惨不忍睹的自绘图:图中简单描述的是一个屏幕,屏幕里面包含了一个窗口,窗口里面包含了一个显示控件(这个控件可以理解为duilib的各种布局与控件组合),在一般的界面系原创 2020-08-05 11:55:14 · 2088 阅读 · 0 评论 -
duilib整体框架认识
从GoogleCode上下载的duilib工程中附带的一副总体设计图(如下所示),可以先整体了解一下,有个初步的认识,对后续进一步深入了解学习会很有帮助。通过设计图有了一个初步认识后,接下来开始进一步深入学习了解,主要从以下几个方面进行了解学习:库的组成;框架基本流程;元素创建机制;消息处理机制。1. 库的基本组成1.1 工具库由于duilib没有对外部的任何库进行依赖,所以在其内部实现了很多用于支撑项目的基础类(如下图所示)。这些类分布在Util文件夹中:UI相关:CP.转载 2020-08-04 14:50:28 · 457 阅读 · 0 评论 -
Duilib使用---颜色配置
前言duiilib是通过加载配置的xml文件渲染显示的界面,xml文件在duilib中扮演着类似衣服的角色,所有关于外表界面的各种属性全在xml文件配置,这篇文章介绍一下duilib的颜色配置。8位16进制值表示颜色简单示例下面是摘自一个简单示例的一段duilib的xml,表示的是一个水平布局,包含四个元素(两个label,两个button)。<HorizontalLayout height="30"> <Label name="labsoftname" text原创 2020-08-04 14:30:04 · 1802 阅读 · 0 评论 -
duilib消息类型
duilib作为一个轻量快速的开源界面库,有很多值得学习的地方,虽然也有不少人吐槽它的各种问题,但是它是一种技术,技术没有正确与错误,好与坏之分,可以取其精华,学为己用就足够了。本篇记录duilib的消息类型(类似于MFC的消息)。消息 说明 Sender 宏定义 link CTextUI、CListTextElementUI DUI_MS...原创 2019-07-04 16:46:18 · 968 阅读 · 0 评论