|
GacLib (GacUI) 是支持显卡加速的 C++ Windows GUI 库。这个库具有类似 WPF 的高级排版和控件模板功能,并且可以被 C++ 方便的使用。当选择 Direct2D 作为渲染器的时候,一个空白的 GacLib 程序静态链接 crt 只需要 700k 可执行文件大小和 6M 内存。GacLib 的控件不需要消耗 Windows 的 HWND 资源,这使得控件本身占用的资源减少,性能提高,并且不会影响到其他程序的正常运转。
http://gaclib.net/
https://github.com/vczh-libraries/GacUI
Gaclib is a GPU accelerated C++ User Interface library. It is flexible, customizable with rich amount of built-in layout and controls. It also supports control templates, list item templates, MVVM, localization, animation, etc. More importantly, even if the UI is very complex, it still has good performance in interaction. You can find it at github. This library provide many useful features. If you don't need all features, you can just use a subset of released C++ files to reduce the size of the executable.
作者:Michael Li
链接:https://www.zhihu.com/question/547690372/answer/2745194058
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
微软自己的产品Visual Studio 和Office 不是用MFC作为界面库的。他们都是用Windowless 渲染的技术。外界知道的是DirectUI:DirectUI 目前能找到的源代码:https://github.com/duilib/duilib 这种技术渲染效率高,占用系统资源少。DirectUI 是在 Windows 2000 和 Windows XP 之间开发的,作为一个实验性的可视化框架。DirectUI 早于 Avalon(又名 WinFX 后来又叫做 WPF),可以看到 DirectUI 和 Avalon 之间有许多相似之处。写 DirectUI 的开发者在 Avalon 团队成立时都加入了,所以精神上的联系并不意外。也可以将 DirectUI 视为 Avalon 的更简单且功能更弱的先驱。由于 DirectUI 是实验性的,围绕它的许多过程都没有正式化。特别是,DirectUI相当自由地分叉,没有统一的版本。Windows XP DirectUI:Windows XP 在三个地方使用了相对较早的 DirectUI 版本:资源管理器任务窗格、欢迎屏幕和添加或删除程序控制面板。MSN Explorer:在 Windows XP 之前,代码分叉并复制到了 MSN 团队,他们使用它运行并生成了 MSN Explorer。Messenger:Messenger 团队从 MSN Explorer 团队获得了 DirectUI 的副本,并进行了大量更改,尤其是在可访问性方面。Office NetUI:与此同时,DirectUI 的一个分支版本也交给了 Office 团队,他们将其用作他们称为 NetUI 的框架的基础。Office FlexUI:Office 人员进一步开发了 NetUI,并制作了 FlexUI。Windows Vista DirectUI:Windows Vista DirectUI 从 Windows XP DirectUI 开始,并合并到 Messenger DirectUI 的选定部分中。Windows 7 Ribbon:Windows 7 功能区基于 Office 功能区,因此是 Office NetUI/FlexUI 的一个分支。Windows LiveDUI:Live 团队开发了他们自己的 DirectUI 分叉版本,并从 Wave 4 开始发布。<img src="https://picx.zhimg.com/50/v2-65a4e9b2c7593072ef0b494a2661d967_720w.jpg?source=1940ef5c" data-size="normal" data-rawwidth="958" data-rawheight="332" data-default-watermark-src="https://picx.zhimg.com/50/v2-da30a9fde48563dffc38ac7bb2f67bfe_720w.jpg?source=1940ef5c" class="origin_image zh-lightbox-thumb" width="958" data-original="https://picx.zhimg.com/v2-65a4e9b2c7593072ef0b494a2661d967_r.jpg?source=1940ef5c"/>DirectUI 家族谱系现在的Office 应该是FlexUI,Visual Studio 也是类似的技术。这一点很好检验,你用SPYXX 工具去测试一下这两款产品,整个界面只有一个Windows 句柄HWND。如果是MFC 界面库或者.NET WinForm 又或者是DELPHI写成的,那么每个控件都是一个窗体,都有一个句柄。Spy++ 简介 - Visual Studio (Windows)事实上,微软自己的产品早就抛弃了MFC 那套又大又沉的东西了,而这件事情也是十几年前的事情了。Visual Studio 2010 就大改了一把界面库,Office 甚至还要更早。这东西原理上就是你们轮子哥写的GacUI,他就在Office team。 事实上,对MFC 仍有情感的程序员应该去关注WTL:Windows Template Library (WTL) 这玩意儿写得才精巧,而且是纯模板库实现。
|
|