vczh-libraries / gacui Goto Github PK
View Code? Open in Web Editor NEWGPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features.
License: Other
GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features.
License: Other
如果自己实现三角化 多边形裁剪后然后 提交GPU才能认为是自己实现了硬件加速!
如果可以直接将Object直接序列化到文件并可以反序列化的话,就可以省去存储的代码了。更进一步的话workflow定义出来的就是orm的接口,这样GacUI本身就是数据库的一层皮,还能跨平台,简直就是福音。
"Reference use" means use of the software within your company as a reference, in read only form,
I think it better to disable pull requests or change license
It seems GacUI currently doesn't support DPI auto resize.
For example, the Controls.DatePicker.DateAndLocale demo:
One other thing, the textbox and the scroll bar doesn't have a right-click menu. Yes I know it is Direct2D, but I think maybe it should still have the right-click support as a native widget does?
有个小客户端项目需要用C++写,想了想就下载了GacUI,但是用Visual Studio 2017打开后,编译提示:
Severity Code Description Project File Line Suppression State
Error C1001 An internal error has occurred in the compiler. GacStudio C:\Users\sekkit\Downloads\GacUI-master\Tools\GacStudio\GacStudio\c1xx 1
是要用Win7才可以吗,本人是Win10 1803. 如果实在不行就用小duilib的库了,其实那种也很方便。
PS: 本人最想要的是可以选择Win2k,WinXP的luna和Win7的aeroglass主题风格,这些能不能以后内置到库里面去。Win8/10的风格实在难以接受。
如果我们要做一个GUI桌面应用程序,
我们为什么不选nwjs或者electron?
(暂时不考虑发行文件的体积的问题)
Please add HiDPI support~
if gacui supports game engine that'll be great.
@vczh How can I build the GacStudio and how can I use it?
I am about to follow you on zhihu, but you blocked me.
Plz tell me why^^
I'm waiting...
您好
环境:win7 32位,VS2017
问题1:用Windows SDK 10.0.16299.0编译会有使用SDK头文件错误的error。
问题2:换用Windows SDK 10.0.17134.0编译可以通过但VS2017编译缓慢且电脑比较卡,编译出来的静态库GacUI.lib--336M GacUIComplete.lib--104M GacUILite.lib--99.4M
轮子哥,单纯看demo没法完整掌握GacUI的XML文件的写法,而GacUI也没有相关的文档,感觉入门挺困难的,没法快速上手,不知道轮子哥有没有开发能直接生成GacUI的XML文件的编辑器之类的工具?手写太麻烦了,而且还容易出错。没有类似工具的话,请问怎么才能较快的掌握GacUI的用法?连文档都没有实在痛苦啊(可别说http://www.gaclib.net/Document.html#~/这个是文档)。
轮子哥,您好。我最近在尝试使用Qt制作无边框的窗口,我用setWindowFlags(Qt::Window | Qt::FramelessWindowHint)
去掉了窗口边框,并且我使用Qt的事件过滤器截取了Windows事件,我在WM_NCHITTEST
事件里处理了鼠标指针的变化以及实现了窗口拖动。我用DwmExtendFrameIntoClientArea(hwnd, {-1,-1,-1,-1})
带回了窗口的边框阴影,可是我发现我的无边框窗口无法响应Win+←、Win+→、Win+↑以及Win+↓,也无法在拖动到桌面顶端的时候自动最大化,感觉像是无法响应“窗口管理器”(如果有这么一个东西的话)。GacUI也是自己搞的边框,用起来跟原生的边框一模一样,请问您是调用了什么API,来实现这种与“窗口管理器”的对接?
看到组织 repo 列表里有几个其他平台的 port,但好像近期都没有动静 ,这些 repo 还会继续维护吗?
在 todo 里面看到了
但是为什么 todo 有一行 Ncurses on Ubuntu?
以及 Linux 兼容不能只做 X11,还应该有 Wayland
同一个window下的两个界面visbile-bind到一个bool上之后,界面马上就切换了,想做一个转场动画,要怎么实现呢?
Which tools can I build it?
How can I use it?
弄了半天发现win10下运行编译好的几个exe毫无反映,似乎是还没有支持win10?
I checked out one of your demos. It got blurred because of my zooming text to 125%.
The Windows API has many functions that also have Unicode versions to permit an extended-length >path for a maximum total path length of 32,767 characters.
而源代码中分配了 65536 characters:
WString GetExecutablePath()
{
Array<wchar_t> buffer(65536);
GetModuleFileName(NULL, &buffer[0], (DWORD)buffer.Count());
return &buffer[0];
}
而且有个小建议就是,可以一点一点试大小(MSDN评论里面的。。),毕竟长路径情况太少了。。。
我稍微看了一下源码,并没有深入,但发现有很多重新发明的轮子,比如 FileStream, Array 这样的东东,想知道作者这样设计的意图是什么?为什么不使用标准库呢?
Resource.xml 里是完全新的语法,而且不知道里面的脚本到底是啥语言?真希望能自定义脚本引擎,用上 javascript, lua 之类熟悉的东西。
现在感觉这个库的学习成本有点高啊,怕怕。
Built-in blur effect would be cool.
With shader that can be achieved easily in Game Engines. But ordinary desktop's GUI depends on OS implementation.
Is it possible to implement high performance - high quality Blur effect just can be easily enabled by a xml tag?
我在 mac 下编译报这个错误,是怎么回事?
IItemProviderCallback 这个 class 没有看到有 private destructor ?
生成的exe换个目录就用不了。还有就是GacStudio编译根本通不过,缺少VlppWorkflow.cpp文件是什么鬼。最起码写个最简单的教程啊。
GDI+ 结合 updateLayeredwindow可以实现透明窗口的效果,GacUI 是否也支持透明窗口的D2D渲染?看了下代码和样例,只大概看明白了 D3D结合D2D绘制窗口过程,没有发现透明窗口支持部分
轮子哥,我把GacUI的Demo都编译过了,发现Demo都是静态链接GacUI的,能不能把GacUI编译成dll然后动态链接啊,感觉静态链接的话二进制文件比较大
可不可以提供dll文件和c语言的头文件~
这样对于只使用C开发的人来说就方便多啦~
我看到SDL2也是这么干的
SetMaximizedBox SetMinimizedBox 没效果
在Resource里组合多个页面时
<Window Text="GacPass" ClientSize="x:480 y:320">
<gacpass:RegisterWindow Visible-bind="not ViewModel.MainPasswordSet" ViewModel-eval="ViewModel.RegisterViewModel"></gacpass:RegisterWindow>
<gacpass:LoginWindow Visible-bind="ViewModel.MainPasswordSet and not ViewModel.LoggedIn"></gacpass:LoginWindow>
<gacpass:CodeBookWindow Visible-bind="ViewModel.MainPasswordSet and ViewModel.LoggedIn"></gacpass:CodeBookWindow>
</Window>
ViewModel.RegisterViewModel只能当参数(ref.Parameter)传给RegisterWindow,但是使用ref.Members就会空指针
CHECK_ERROR(thisValue != nullptr, L"The this pointer cannot be null.");
如果想用Members该怎么写呢?
本来我以为按照MSDN的要求,不写manifest就是模糊的,至少还可以正确使用。不过Windows 1809好像不这么想了,他会问用户要不要让程序不模糊,如果选要,那就会进入一种奇怪的状态(常见情况是菜单点不了)。目前大家只能用manifest强行禁止Windows尝试解决这个问题,保持模糊。等到我支持完高DPI之后就不会有这个问题了。
高DPI是GacUI 1.0的一部分,仅对Direct2D开放。
I fixed the issue by skipping APIs in non-supported OS: WinNativeDpiAwareness.cpp.
Code in the Release repo has been updated, but a new version is not made. Please download the source code from the Release repo directly, instead of downloading the latest release.
Vcpkg is a tool to acquire and build C++ open source libraries on Windows.
With a port in vcpkg and we can just typing:
vcpkg install gacui
to install gacui, that would be cool.
Source here:
https://github.com/microsoft/vcpkg
Description here:
https://blogs.msdn.microsoft.com/vcblog/2016/09/19/vcpkg-a-tool-to-acquire-and-build-c-open-source-libraries-on-windows/
如果窗口使用了Template的效果但是没有Tab就像是Demo里面Template.Window.CustomizedBorder一样时,直接按下Alt键会导致崩溃;如果有使用Tab比如Demo里面Persistant.LoadFromXml.ControlTemplate则会在Tab上显示数字标号(不过现在好像还不能当快捷键用),不会崩溃。
----------------Edit---------------
此处描述不当,请见之后回复
轮子哥,请问如何将Qt Widget嵌入到GacUI的界面中啊?
环境:
Windows 8.1 x64
Visual Studio 2015 RC
关闭了全程序优化
Release/Debug均有同样问题
基本上所有64位编译的程序都有问题,32位的就没有
重现方法:
是打开程序快速随机点击操作,通常1分钟内程序就会崩溃
比如:
异常:
0x00007FFACD218B9C (KernelBase.dll) (Controls.Button.CheckAndRadio.exe 中)处有未经处理的异常: 0xC0000002: 未运行请求的操作。。
堆栈:
KernelBase.dll!00007ffacd218b9c() 未知
d2d1.dll!00007ffac643c361() 未知
d2d1.dll!00007ffac668fe25() 未知
d2d1.dll!00007ffac666f2b1() 未知
d2d1.dll!00007ffac666ef7f() 未知
d2d1.dll!00007ffac666bd51() 未知
>Controls.Button.CheckAndRadio.exe!vl::presentation::elements_windows_d2d::GuiSolidLabelElementRenderer::Render(vl::presentation::Rect bounds) 行 11675 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32119 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsComposition::Render(vl::presentation::Size offset) 行 32136 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsHost::Render() 行 36534 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::compositions::GuiGraphicsHost::GlobalTimer() 行 36469 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::windows::WindowsCallbackService::InvokeGlobalTimer() 行 2686 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::windows::GodProc(HWND__ * hwnd, unsigned int uMsg, unsigned __int64 wParam, __int64 lParam) 行 5555 C++
[外部代码]
Controls.Button.CheckAndRadio.exe!vl::presentation::windows::WindowsController::Run(vl::presentation::INativeWindow * window) 行 5336 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::controls::GuiApplication::Run(vl::presentation::controls::GuiWindow * _mainWindow) 行 155 C++
Controls.Button.CheckAndRadio.exe!GuiMain() 行 112 C++
Controls.Button.CheckAndRadio.exe!vl::presentation::controls::GuiApplicationInitialize() 行 437 C++
Controls.Button.CheckAndRadio.exe!RendererMainDirect2D() 行 12997 C++
Controls.Button.CheckAndRadio.exe!WinMainDirect2D(HINSTANCE__ * hInstance, void (void) * RendererMain) 行 235 C++
Controls.Button.CheckAndRadio.exe!SetupWindowsDirect2DRenderer() 行 249 C++
[外部代码]
另外最小化之后占用内存快速上升,已经按照 vczh/gac#4 提供的方法解决了。
谢谢!
There are lots of errors when I built it. Can you fix them?
想把多个table界面写到不同的xml里去,发现必须要在table上套一层实现了aggregatable的控件(custom/tabpage),which只能
<Instance name=""> <Instance ref.Class="LoginWindow"> <CustomControl> <Table> </Table> ...
不想把多个界面的Workflow都写在一个Resource文件里
用Visual Studio 2015 CTP 6直接打开的GacStudio.sln....难道是我打开方式不对。。。。
啊,好吧。。我改掉了new的宏定义。。这样就编译成功了,1407个Warning。。WX4.。。。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.