转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/43532791
半透明异形窗体的功能在之前维护的老版本的duilib里面已经有了基本的功能,但是因为一直存在较多的缺陷,所以我一直建议少用,就连我自己写仿酷狗项目也只是在几个小地方用了半透明异形窗体。不过今天在群里和其他几位朋友讨论后,发现了之前的许多问题以及解决方法。所以我立马修复了当前的库,并且写了一个半透明异形窗体的demo来测试效果。这里的半透明窗体是用UpdateLayeredWindow函数实现的,并不是双层窗体。
总体来说,为了给官方原本的duilib391版本库增加窗体半透明异形功能,需要修改的类如下:
1、CManagerUI类的WM_PAINT消息处理代码
2、CRenderEngine类的文字渲染函数、和背景填充函数、贴图函数
3、CEditUI类的win32 edit创建函数
4、CRichEditUI类的光标绘制函数(自绘光标,需要结合CManagerUI类的相关代码)
5、给CManagerUI类增加自绘CRichEditUI光标的一系列函数
6、处理窗体类的最小化还原小(需要结合CManagerUI类的相关代码)
7、给CManagerUI类增加最小化还原后的消息处理代码,为了在半透明状态下完全刷新窗体