wtl的增量改进.
序号 | 要求 |
---|---|
1 | 不能带DLL,必须是静态链接 ,尽量小依赖. |
2 | 代码必须足够小 ,一般来说要500KB 左右最好. |
3 | 较好看 图形效果,过场动画,半透明阴影光圈什么的. |
用WTL写,静态链接只有50KB
左右,但只能创建使用基础标准控件
,做个透明窗口
都要自己再用其他API实现.
实现GUI库,有几个基本的子系统:
序号 | 系统 |
---|---|
1 | 窗口管理系统,用wtl 封装.不派生 |
2 | 事件系统,用sigslot .基于模板,只头文件, |
3 | 图形系统,写个GDI+ 的包装,解决png/jpg 编码,FrameBuffer 支持RGBA ,用UpdateLayeredWindow 更新窗口,实现半透明 异形窗口图形效果,实现阴影边缘 什么的. |
4 | 布局系统,xml/json .自用mjson ,根据描述 构建窗口控件对象树 .未实现复杂布局,只实现Anchor 布局. |
5 | 串/容器 ,实现写时复制/统一内存池 ,用eastl . |
6 | 杂项工具:基本算法,MD5 SHA1 ZIP 7Z ,网络支持,TCP UDP HTTP ,简单的select,HTTP封装WinHTTP.IO支持,RFile RStream |
7 | 基本控件,RButton RLabel RTextEdit 按需定制 |
class RWindow : public RObject
{//包装wtl
private:
RWindowPrivate *d;
};
class RWindowPrivate
{
public:
CWindow m_wnd;
};
使用:
class RWindow : public RObject
{//信号槽
sigslot::signal0<> Clicked
}
class MyApp
{
void on_clicked()
{
}
void init()
{
m_win.Clicked.connect(this, &MyApp::on_clicked);
}
RWindow m_win;
}
控件设定好对象名
,在C++里提供
template<typename T>
T *findObject(const RString &name)
//手动绑定
gui
要有配套工具链
,大工程推荐qt
.还可以再绑定
脚本,如lua
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现