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按需定制

sigslot下载地址
mjson

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值