如果遇到bug和模块冲突,欢迎找我报错,最好带上例子。
本模块部分功能需要 VS 2017 以上才能编译使用。
现在提供两种形式的安装包:
模块本体的安装包。
火山自身的模块安装包格式,双击 .vcip 文件即可打开火山程序进行安装,但压缩率比较低。
如果安装失败,请对火山主程序按鼠标右键打开「属性」,勾选「兼容性」选项卡里的「以管理员身份运行此程序」。
由于部分静态库文件太大,而且不会经常更新,所以另外用 7z 格式压缩。
请手动解压安装到 火山目录\plugins\vprj_win\classlib\user\piv\
本模块总共有两个子模块,子模块之间功能不重叠,主要是收录标准有以下差别:
PIV基础类
除了视窗基本类,不依赖其他任何模块。
PIV扩展类
会依赖部分官方模块,但不会依赖界面库和其他第三方模块。
本模块封装遵从以下标准:
不重复造轮子
核心库已有的功能,如果没有可明显改进的地方,不会重复封装。
开源
所有封装的代码均公开源码。
效率优先
以执行效率为优先,基本使用C++和嵌入式语法封装。
源码编译
能直接用源码编译的库,就不会编译成 dll 再封装,缺点是会增加编译耗时,如果其他代码出错,可能会一下子蹦出大量报错。
面向对象
关联性的功能封装成类,以类实例使用。除了常用命令,尽量减少使用全局类,以「类名.静态方法」调用,减少同名冲突。
解耦
减少不同类库之间的互相依赖,能以最小的代价把类库抠出来单独使用。
随着基础功能的广泛应用,类库之间耦合度增大,已经难以解耦了。
我也不知道,作为起名废,这名称是沿用了我注册的一个域名,而当初注册这三个字母域名的时候,拼凑的思路上比较靠近 pic、pixiv。
有人说 PIV 是 VIP 的取反,虽然不是我本意,但这的确很恰当,因为PIV模块会一直免费开源。
本模块已有一定的历史,一些早期功能已经不合时宜,但为了兼容用户较早前写的源码,我一直有保留
为了让用户尝试新的东西,所以从 2023/07 版开始,我通过火山的条件编译功能屏蔽了一些过时功能
如果你有旧源码不想改的话,请在项目属性的「编译时预定义宏」中添加 PIV_ENABLE_OBSOLETE
※我经常修改现有的代码,比如修正bug、优化效率、规范格式、修订备注等……如果功能和用法没有改变,一般不会写在更新日志里,所以每次更新改动的地方其实还是有不少的。
使用本地类别名重写「标准文本类(W/U/A)」与「文本视图类(W/U/A)」;
「磁盘监视类」增加「被删到回收站」和「文件被移动」事件;
其他优化与修正;
注意:这一版改动比较大,旧项目的代码可能需要少量修改。
使用别名类型重新封装了部分 C/C++ 本地类和本地结构,本地类和本地结构的特征:不继承火山的对象类、没有调试输出信息、不能设置参数默认值(空对象)、不能设置初始值;
注意:由于 ImGui 大部分类型重新封装为本地类,部分参数不再支持可空默认值;
由于官方库增加了对应类型,所以「标准文本类」改名为「标准文本类W」、「文本视图类」改名「文本视图类W」;
将「发送输入类」升级为「键鼠输入」;
Go协程改为默认不 HOOK 系统 API,需要的请手动调用「Go协程.启用HOOK ()」;
其他优化与修正;
修正已知问题;
注意:下一版将使用别名类型等新特性,将不再兼容 2024 年之前的火山;
优化「格式日志类」:
优化「线程池类」和「线程池类EX」:
新增类「数组P」,提供一些增强的数组操作,部分参考了龙纹的「FP函数扩展」模块;
「文本P」增加多字节数组到文本、UTF8字节数组到文本;
其他多处优化和修正;
相对于之前单独发布的版本,有以下重要更新:
BASS音频库
格式日志类(fmtlog)
CNG加解密
高并发网络访问类
时钟队列类
其他(大量未发布过的新内容,这里就不一一列举了)
※本模块封装的开源项目均采用较宽松的开源协议,如 MIT、BSD、MPLv2 ……