- 博客(18)
- 资源 (4)
- 收藏
- 关注
原创 Duilib界面库Capture系列的相关bug解决
Duilib是个轻量级的Windows界面库,可以让使用者在最快地时间构建出自己的项目,而且依赖最少。这里之所以突出它的“轻量级”,是为了强调作者在构建该界面库时的良苦用心。但是,物极必反,有些东西做得足够“傻瓜”后,就会变的不灵活。Duilib的控件的Caputre是个硬伤啊(希望作者不要骂我啊,我真是不好意思拆这个台,但是我今天真的遇到一个不可忽视的bug)。这个bug咱们暂且不说,先介绍一下
2015-05-27 11:36:38 3226 5
原创 关于Duilib的扩展——“拖放”实现(二)
上一次我们实现了让窗口支持DropTarget,我们实现了一个叫做IDropTarget的接口。但是还没有给控件实现,当然如果你在这个窗口里面只有一个控件实现DropTarget的话,你完全可以使用Rect来进行区域限制,但是这样还是比较麻烦,还要手动添加一堆代码。所以我们直接让控件实现这个功能,只需要一个bool属性,就可以控制一个控件是否能接受拖拽。为了减少源代码的修改,我们弄下面
2015-02-05 18:10:10 4099 3
原创 关于Duilib的扩展——“拖放”实现(一)
目前我们的Duilib是不支持拖拽的,想必大家已经知道什么是“拖拽”了,比如Windows文件浏览器,拖动文件到另一个窗口,实现复制或移动;再比如,QQ的好友列表,拖动,互换位置。 所谓“拖拽“其实是两个动作,一个主动,一个被动。主动的叫”拖“,被动的叫”放“。那么支持”拖“动作的控件就叫做DropSource(拖放源),支持”放“动作的控件就叫做DropTarget(拖放目
2015-01-04 00:17:27 5531
原创 新版MenuDemo——使用Duilib模拟Windows原生菜单
相信玩Duilib的朋友已经期待这篇文章很久了,因为我在一周前发表的文章——“无焦点窗口的实现”里面提到了无焦点窗口在菜单里面的应用,并承诺大家,写一个关于Menu实现的Demo分享给大家。先上几张截图,看一下效果 怎么样,Skilla这次的作品还能让你心动吧,没错,上面的菜单效果可不是酷狗里面的截图,就是我们熟悉的Duilib实现的。 说起菜单,
2014-12-22 13:07:45 7916 16
原创 轻轻的我走了,正如我轻轻的来——Duilib无焦点窗口的实现
在Windows编程中,我们已经习惯了一个窗口从创建到显示并获得焦点。我们总感觉一个窗口创建出来获得焦点是理所理所当然的,一个窗口只要显示就必须获得焦点。一个新窗口显示时,会收到到WM_SETFOCUS消息,然后旧的窗口会收到WM_KILLFOCUS消息。可能我们并不关心焦点的切换,因为从视觉角度来看,没有任何影响,但是键盘类的消息却在焦点变化时不断切换响应窗口。我们都知道,鼠标消息到来时,决定哪
2014-12-18 20:21:57 5792 3
原创 Duilib源码的关键部分
Skilla使用duilib已经有一年了,经过一年的摸索,也逐渐地解开了里面的大大小小的秘密。从熟悉Demo到布局特性的了解也是经历了数月的时间,核心机制也是最后才弄明白的,源码的探索也是由表及里的。但是这个速度是非常缓慢的,所以今天Skilla要写这篇文章,让大家可以有主到次地来认识Duilib。 其实,要想以最快的速度把源码弄通,是需要有先后顺序的,说的再简单点就是要抓住核心
2014-11-26 10:28:57 3593 4
原创 DirectUI通用动画框架
在编写VC界面时,编写动画比较困难,代码重用性不高。编写一个临时动画需要创建定时器或者线程来驱动改变渲染状态,来达到画面实时改变的目的。但是定时器和线程都是比较难以维护的,处理不好很容易造成资源浪费甚至程序崩溃。 Skilla在上一周整理好了skillcore库,这一次又给它增添了通用动画框架。这个动画框架本身没有渲染功能,主要是提供动画的驱动事件,使用时需要自己去处理动画事件
2014-11-22 22:19:06 4190 6
原创 Juce源码分析(九)应用程序基类ApplicationBase
Juce应用程序基类ApplicationBase,管理应用程序的生命周期,包括消息管理器的初始化,应用层的初始化,消息循环,退出循环后的shutdown通知
2014-11-17 20:58:41 2370 2
原创 Juce源码分析(七)弱引用(2)引用对象指针的维护与原对象析构后的通知
弱引用的使用方法如下 MyObject* n = new MyObject(); WeakReference myObjectRef = n; MyObject* pointer1 = myObjectRef; // returns a valid pointer to 'n' delete n; MyObject* pointer2
2014-10-31 10:20:05 1472
原创 Juce源码分析(五)对象泄露探测器
内存泄漏形象的比喻是“操作系统可提供给所有进程的存储空间正在被某个进程榨干”,最终结果是程序运行时间越长,占用存储空间越来越多,最终用尽全部存储空间,整个系统崩溃。所以“内存泄漏”是从操作系统的角度来看的。这里的存储空间并不是指物理内存,而是指虚拟内存大小,这个虚拟内存大小取决于磁盘交换区设定的大小。由程序申请的一块内存,如果没有任何一个指针指向它,那么这块内存就泄露了。
2014-10-28 10:39:45 1845
Duilib新版MenuDemo(仿酷狗菜单展示,仿真度超过90%)
2014-12-23
Duilib新版MenuDemo(附带仿酷狗菜单Demo,仿真程度高达90%以上)
2014-12-22
skillcore实现的UI动画Demo
2014-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人