1、插件及窗口设计器
-修复鼠标左右键互换后无法拖动和拉伸问题
-修复窗口设计器中切换标签页控件中出现残影的BUG
-修复在父容器粘贴或移动控件坐标跑飞的BUG
+编译开始前Hook构建命令中的BeforeExecute让其先检查所有窗口标签页的保存
-修复编译后重新选中控件方向键无法移动的BUG
-修复通过窗口属性下拉选中的控件无法使用快捷键的BUG
+让uidllmeta.exe在引入Windows宏时能够解析生成常量数值到元信息(修复进度条、滑块条的设计器问题)
+更新MCP中的agent提示内容
+优化暗黑模式的体验
2、基础库代码级
2.1 BECore:
-修复 ToBytes 对非const版char*/charW* 误处到模板(包括补上了StrU8与BR),给ToInt/ToShort/ToLong/ToFloat/ToDouble 加了空指针保护以及W版转换增加缓冲区长度限制,避免栈溢出。
-修复列表框在设计器中只有最多2个项目显示的BUG(特别提醒SplitV2所给的分割字节集不得给上字面量它不具备长生命周期导致分割第二个字节集之后失效,推荐使用BNULLW这个全局常量,且现已将如Bytes({1,2})的字面量构造转向堆内存模式)
2.2 BEWin32UI:
-修复选择夹使用自定义背景色时没铺满背景的问题
-修复外形框、图片框等父容器承担子容器背景透明的渲染链路(让如单选框/选择框等得以支持背景透明)
-修复编辑框在窗口拉伸后的背景透明问题
-调整标签默认为纵向居中对齐
-修复图片框在非缩放时超框的BUG
1、插件及启动器
+VS快速启动器支持列出下拉项目快速选择
+对中文拼音输入支持中文之后继续混写拼音
+编辑-区域折叠功能增强,若向上搜尽也没有region块时则收缩的是它当前最外层的函数/方法
+模块查看器加入平坦视图模式(默认以文件视图,搜索框旁边的按钮可自由切换模式)
+模块支持当原始bec路径不存在时切换到白易安装目录的用户模块搜集目录中继续检索
+首发Win32窗口设计器、系统级支持网格布局(目前处于实验性质)
2、基础库代码级
+封装C++17标准库自带线程相关操作为中文版到系统模块(多线程std:互斥锁、读写锁、条件锁、线程级事件信号、自动套锁(std::lock_guard)、原子整数操作,信号量的封装等开始搞进程通信写消息队列时再说了)
2.1 BECore:
+BECore加入SplitV2/分割V2(若要支持按2字节单位分割需用此方法并自行循环获取,注意原分割字节集依旧按1字节单位匹配)
-修复BytesStr中部分方法在取strlen前未判断空指针语义的问题
2.2 BEWin32Base:
+文件保存对话框新增[默认后缀]选项
+加入dbg_flog(可选参数文件名,不过注意它与默认的dbg_log行为不一样,dbg_log是固定的文件名logs\dbg.log它会在程序启动之前会被清空并在整个程序生命周期内可持续向尾写入,而dbg_flog指定的文件名总会向尾进行日志内容写入)
2.3 BEWin32UI:
+重构UI基类,现在真正的UI基类是组件基类(无HWND,直接继承它时可获得最小化的C++组件实现,如时钟.cpp,但有父容器来管理销毁它的生命周期),而窗口基类会继承于组件基类,同时连锁的父容器中的子组件列表现已改为组件基类;对创建所需的参数均采用聚合初始化作为标准(现已无需构造函数,但必须保证x,y,w,h这4参必须在首位)
-将窗口基类的析构方法调整为虚析构、将异步销毁重构为virtual bool 销毁(bool 同步 = false);,且默认情况下总是使用异步销毁(可对比参考原先输入框.cpp中的实现示例)
-正式采用在窗口类中添加组件类设定为匿名类(后续从XML翻译生成的原生C++代码均采用此方案)
+加入网格(grid)布局
-修复选择框、单选框文字背景未使用反射消息的问题
-修复编辑框的密码模式时未垂直居中
-修复容器类在其窗口大小改变时未及时刷新内部的子控件BUG
2.4 Sciter-Html
-将SciterUI原本的创建()现改为绑定()方法,补充将sciter支持为子窗口模式创建
3、调试与构建
+MakeBEC工具新增规则 BE_INLINE区域,在源文件中纯内联式进行包含解析(区域中仅可用#include),最终仅生成一份头文件。
+引入clib-mangle.exe,用于支持C库改编到C++符号
1、插件及启动器
+VS快速启动器在返回上级目录后选中退回前的目录到超列
-修复插件导入模块的源文件时偶然意外添加到根筛选器目录的问题
-资源表中路径相关已知BUG
-修复bebuild对VS-IDE找不到项目时应回退msbuild的逻辑问题
-修复对系统模块安装时删除目录延迟问题导致极少数情况解压不全的BUG
+对私有模块添加命名空间的符号改编给出良好的带处理进度GUI界面
+正式对VS解决方案加入右键菜单[BEVC++改名与复制项目],同时新增是否连同首目录及sln的修改
(参考:https://wiki.xbcsoft.com/BEVCpp/?file=VS项目复制与改名工具.html)
2、基础库代码级
2.1 BECore:
+_BSA/_BSW 给到const Bytes&类型
+补上bytes.reset(const Bytes&)
+令Arraybe的[]操作符在DEBUG版下走at()方法(即进行越界检测则抛出异常)
+对be::function支持使用函数返回类型及可变参数包:
template<typename Ret, typename... Args, size_t STACK_CAP>
class function<Ret(Args...), STACK_CAP>;
2.2 BEWin32Base:
+新增文件日志(类)(可有两种模式的日志存储模式,单文件、按日期+周期分类到文件夹)
+新增创建目录Ex、写到文件Ex,表示支持创建多级目录
+文件_枚举对回调模式新增附加参数指针
-将 判断是否为相对路径 改为 是否为相对路径,取绝对路径 且对这两参数路径现在已经修正为StrX
-修复读配置项引进StrX后的BUG
2.3 BEWin32UI:
+标记_取/置整数 现已调整为size_t(即在32位上是4字节,64位上是8字节)
+可视_(true) 调整为ShowWindow(, SW_SHOWNA);
+对激活()方法给到两种方式,激活类型=0 默认仅设置线程的活动窗口,非0则使用常规激活
+新增 位置是否最小化()、位置是否最大化()、位置还原()
2.3 其他内建库
+将JSONie的取/置属性接口形式与当前SciterObj对齐(可使用分隔符),现已对JSONie、XMLite、RegExpie的模块封装采用cpp源文件级发布
2.4 【★首发引进Sciter-Html作为自绘界面库☆】:
+在__demoTemplates已提供BE-SciterUI(完全自绘)、BE-SciterUI(原生外观)初始创建模板
+更改main函数新入口规范(见上述例子)
+已实现的BEModExamples例子展示:
●JS相关(原生C++T_MAP与JS引用T_OBJECT对象、执行脚本/调用函数/注入回调、字节集交互/嵌入内存图片、DOM元素操作、JS模块化、虚拟DOM/模板引擎/数据驱动视图/共享同步刷新、协程化并发演示);
●窗口相关(异形窗口/分层透明、嵌入Win32原生控件、弹出层窗口/自绘菜单/托盘菜单、自定增强四周拉伸、窗口获焦失焦指定不同外层边框/阴影、DWM毛玻璃特效、离屏快照/滚动区域);
●组件化拆分案例(仿QQ启动百叶窗渐出-启动特效典范、Metro主题-可复用组件);
●资源拦截重定向(可针对URL指定内存数据返回)
+支持两种方式编译资源和使用模式:
SciterUI::参数 cs;
//本工程已将启动目录设置为$(ProjectDir)\out
#ifdef _DEBUG
cs.文件_html = "index.html";
#else
cs.内存_zip = R::htmZip;
#endif
//打包内存zip已在Release版集成链接期调用out\__!packZipLib.bat
3、调试与构建
3.1 -BEWin32UI中对x64库的编译此前失误给到全程序优化,现已去掉(一来是发现在x64编译的程序中出现类方法的导出表,二来也是为了ABI兼容性)
3.2 +现已支持cpp源文件当作封装模块时可以使用EXP导出C++类,白易主程在导入时会自动检测这类cpp源文件从而在插件级对链接时期进行hook、将该obj进行导出表的屏蔽(注意此操作不影响其他常规编译单元中DLL的导出表,仅限于模块中cpp当场编译出的obj)
3.3 +在封装白易模块时,推荐将"原生库"(如curl、openssl等)的源文件或包含头文件放进BEMod中(因为模块工程中新建的项目其MakeBEC内部配置就是默认排除BEMod的)
3.4 给调试用的_CWinDbg宏正式更改为DBG(注意没有前缀"_")便于“选择(DBG,a,b)”使用:
-移除窗口程序中使用控制台的VS-CWinDbg配置,取而代之对白易管理启动器所有的新建项目但凡是Debug模式下的都加入了DBG=1这个全局配置宏的设定(在Release下但凡引入了BECore的编译单元都会检测但凡DBG在全局没定义的话则自动引进DBG=0,故DBG该符号一定会存在)——已测在release下经编译优化0开销不产生另一分支的代码
-将原先cw_print、cw_printf更名为dbg_print、dbg_printf,此前调试输出()该全局函数的英文名debug()保持不变
+对coutlog这个远程调试输出的库统一绑定于此(即定义了DBG的话才进行生成实际调用)
+给DBG宏家族加入新的调试工具函数dbg_log()(该函数是基于文件日志类引申出的be::log全局对象它将在当前目录下给到dbg.log文件的写入)
PS:~为什么不统一用VS自带的"_DEBUG"宏,稍微解释一下这么做的原因
系统自带的_DEBUG这个宏在Release下它是未定义那么则无法使用“选择(DBG,a,b)”一行去书写(会报该符号不存在),此外在Release模式下该DBG宏我们也可以手动进行定义也能让其进行运行时相关调试输出(而不依赖系统的_DEBUG,系统自带的若自己轻易在Release内定义了_DEBUG反而会更加危险),且还想支持Release版下也能使用DBG宏进行coutlog的远程调试输出
4、AI-Agent
+对SciterUI加入编写HTML兼容性避坑说明向导
+增强BEMcpServ.exe常驻进程的保活检测机制
-已删去原先cw_print的建议而改为dbg_log(在MCP实践中更推荐AI使用此方案直接写日志文件的形式去看输出,因为有些AI它在关掉进程后压根就看不到输出或有输出缓冲区的问题)
+告知AI对当前项目目录优先在out文件夹内进行资源的存放(建议开发者需手动将程序运行的工作目录更改为$(ProjectDir)\out)
+调整AI对当前VS配置不再局限于检查配置名是否为此前的CWinDbg(当然这个配置项现已被废除),而是检测当前项目配置是否具备DBG的宏(因为是模块工程时一键从控制台切换过来的source也可能具有DBG宏),假如DBG不存在则应自行创建输出的日志文件(通过白易自带的"文件日志"类)
(参考:https://wiki.xbcsoft.com/BEVCpp/?file=更多MCP操作技巧.html)
若在用户电脑中找得到CDB调试器:X:\Program Files (x86)\Windows Kits\10\Debuggers\...\cdb.exe 则也可采用调试输出(即:OutputDebugString)
(参考:https://wiki.xbcsoft.com/BEVCpp/?file=PDB符号定位源代码的调试技巧.html、https://wiki.xbcsoft.com/BEVCpp/?file=CDB自动化AI调试定位异常行号.html)
-修正白易系统库的版本号设定问题,此前有打算将白易插件和白易系统库分开独立进行维护,所以一开始设定将库版本为1.0本身没什么问题(后期若频繁更新的话也会很自然地快速来到2.0、3.0...),但迫于现实问题日更或周更变得不可能,现在基本更新频率都至少是月更(除非有严重影响使用问题或安全漏洞),同时也是为了保持与插件版本号同步所以要将库版本统一修正到0.6版本(况且白易插件目前都还没来到1.0,所以库版本会给人一种错觉)
+对VS插件加入自动检测更新版本功能(默认启动后3秒执行检测,可在菜单栏帮助中永久取消)
+当前版本具体更新如下:
8、MCP服务器,
+文档教程网站中上线 [更多MCP操作技巧.mht、已知问题.mht] AI专栏文章
+改进AI提示词,让deepseek flash v4这样的普通模型能够通过白易窗口程序的设计测试(见B站视频演示)
+新增用户模块更新接口(这为使采用用户模块的工作流工程自动化测试更加方便,详情:更多MCP操作技巧.mht)
+新增临时C++项目新建接口(new_project,这让AI自己临时测试一些项目时非常方便,详情:更多MCP操作技巧.mht#newproj)
+优化AI对窗口程序的测试开发(会自行切换到CWinDbg模式采用cw_print打印测试)