易IDE视觉库插件开发文档

插件开发


1.2.101

<p>[toc]</p> <h1>1.2.101</h1> <blockquote> <p>2022-01-01 易IDE视觉库1.2.101正式版 修复:</p> <ol> <li>开启行号插件后切换代码选择夹导致行号显示异常的问题</li> <li>配色无法保存的问题 【注意】1.1的时候对clr文件是只读 1.2加上了写的权限, 请注意备份clr文件 易语言可能会出现配色错误的bug, 导致clr被修改</li> <li>D2D资源失效会重新创建资源, 如果都失败, 那只会弹窗一次 开发环境没有出现过这个问题, 所以, 请把重现方法发送给006, 让006处理</li> <li>组件箱底部显示白条的问题</li> <li>新建主题可能失败的问题</li> <li>修复状态夹内的输出/提示等组件被隐藏的问题</li> <li>修复窗口设计器有可能不重画滚动条的问题</li> <li> </li> </ol> <p>新增:</p> <ol> <li>新增几个与重绘窗口相关的接口 可以一个命令让窗口拥有与视觉库相同的视觉效果 详情请参考开发文档: <a href="https://www.showdoc.com.cn/1503905757897784/8233446128916707">https://www.showdoc.com.cn/1503905757897784/8233446128916707</a></li> <li>树型框增加了Ctrl + F 搜索项目, F3搜索下一个, Shift + F3 搜索上一个</li> <li> </li> </ol> </blockquote> <h2>新增函数</h2> <hr /> <h3>iDraw_DrawWindowProc <code>最低要求版本: v1.2.101</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 把窗口的消息转到重画窗口的过程去处理 // 参数: // 参数1: 需要重画的窗口句柄 // 参数2: 需要处理的消息 // 参数3: 参数1 // 参数4: 参数2 // 参数5: 参数2 // 参数6: 窗口原来处理消息的回调地址 // 参数7: 接收处理完的消息返回值 // 返回值: // 返回是否处理了这条消息 bool IDRAW_CALL iDraw_DrawWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, WNDPROC oldProc, LRESULT* pRet);</code></pre> <hr /> <h3>iDraw_DrawGetDefArg <code>最低要求版本: v1.2.101</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取默认参数 // 参数: // 参数1: 需要重画的窗口句柄, 为0则在返回后自己给窗口句柄赋值 // 参数2: DRAW_STRUCT_WINDOW_ARGUMENT 结构指针, 内部把默认参数填充到这个结构里 // 返回值: // 返回保存窗口信息的结构指针, 组件的各种配色信息都在这个结构中保存 bool IDRAW_CALL iDraw_DrawGetDefArg(HWND hWnd, LPDRAW_STRUCT_WINDOW_ARGUMENT arg);</code></pre> <hr /> <h3>iDraw_SubclassWindowEx <code>最低要求版本: v1.2.101</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 把一个顶层窗口重画成与视觉库相同的视觉效果 // 参数: // 参数1: 需要重画的窗口句柄 // 参数2: DRAW_STRUCT_WINDOW_ARGUMENT 结构指针, 为0则使用与当前主题匹配的配色信息 // 返回值: // 返回保存窗口信息的结构指针, 组件的各种配色信息都在这个结构中保存 LPOBJSTRUCT IDRAW_CALL iDraw_SubclassWindowEx(HWND hWnd, LPDRAW_STRUCT_WINDOW_ARGUMENT arg);</code></pre> <hr /> <h3>iDraw_CreateWindow <code>最低要求版本: v1.2.101</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 创建弹出式窗口, 这个窗口和视觉库有相同的视觉效果 // 参数: // 参数1: 窗口的扩展样式, 详情请参考 CreateWindowEx 的说明 // 参数2: 窗口的标题, 为0则没有标题, unicode文本 // 参数3: 窗口的样式, 详情请参考 CreateWindowEx 的说明 // 参数4: 窗口在屏幕的左边位置 // 参数5: 窗口在屏幕的顶边位置 // 参数6: 窗口宽度 // 参数7: 窗口高度 // 参数8: 父窗口, 如果为0, 则没有父窗口, 如果有则创建的窗口始终在这个窗口之上 // 参数9: DRAW_STRUCT_WINDOW_ARGUMENT 结构指针, 为0则使用与当前主题匹配的配色信息 // 返回值: // 返回保存窗口信息的结构指针, 组件的各种配色信息都在这个结构中保存 LPOBJSTRUCT IDRAW_CALL iDraw_CreateWindow(DWORD dwExStyle, LPCWSTR lpWindowName, DWORD dwStyle, int x, int y, int cx, int cy, HWND hWndParent, LPDRAW_STRUCT_WINDOW_ARGUMENT arg);</code></pre> <hr /> <h3>iDraw_Event_Draw <code>最低要求版本: v1.2.101</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 挂接窗口绘画事件, 只有调用 iDraw_SubclassWindowEx, 或者 iDraw_SubclassWindow 的窗口才有效 // 当窗口在绘画 系统图标, 标题, 系统按时, 会触发事件 // 参数: // 参数1: 有调用过 iDraw_SubclassWindowEx 的窗口句柄, 或者 iDraw_SubclassWindow 返回的窗口句柄 // 参数2: 接收绘画回调的函数, 函数原型 = typedef bool(CALLBACK* PFN_SysDraw)(LPDRAW_PAINTSTRUCT dps); // 参数3: 传递到回调函数里的参数 // 返回值: // 返回是否成功 bool IDRAW_CALL iDraw_Event_Draw(HWND hWnd, PFN_SysDraw pfn, LPARAM param);</code></pre> <hr /> <h3>iDraw_Event_SysButtonClick <code>最低要求版本: v1.2.101</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 挂接系统按钮点击事件, 只有调用 iDraw_SubclassWindowEx, 或者 iDraw_SubclassWindow 的窗口才有效 // 参数: // 参数1: 有调用过 iDraw_SubclassWindowEx 的窗口句柄, 或者 iDraw_SubclassWindow 返回的窗口句柄 // 参数2: 接收绘画回调的函数, 函数原型 = typedef bool(CALLBACK* PFN_SysBtnClick)(int id, LPARAM btnParam, BOOL isRButton, LPARAM param); // 参数3: 传递到回调函数里的参数 // 返回值: // 返回是否成功 bool IDRAW_CALL iDraw_Event_SysButtonClick(HWND hWnd, PFN_SysBtnClick pfn, LPARAM param);</code></pre> <hr /> <h3>iDraw_AddSysButton <code>最低要求版本: v1.2.101</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 添加系统按钮, 系统按钮索引是从右往左, 只有调用 iDraw_SubclassWindowEx, 或者 iDraw_SubclassWindow 的窗口才有效 // 参数: // 参数1: 有调用过 iDraw_SubclassWindowEx 的窗口句柄, 或者 iDraw_SubclassWindow 返回的窗口句柄 // 参数2: 按钮的ID, 如果有相同ID, 则替换数值 // 参数3: 按钮数值 // 返回值: // 返回新增加按钮的索引, 系统按钮索引是从右往左 int IDRAW_CALL iDraw_AddSysButton(HWND hWnd, int id, LPARAM param);</code></pre> <hr /> <h3>iDraw_DelSysButton <code>最低要求版本: v1.2.101</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 删除系统按钮, 系统按钮索引是从右往左, 只有调用 iDraw_SubclassWindowEx, 或者 iDraw_SubclassWindow 的窗口才有效 // 参数: // 参数1: 有调用过 iDraw_SubclassWindowEx 的窗口句柄, 或者 iDraw_SubclassWindow 返回的窗口句柄 // 参数2: 要删除的按钮ID // 参数3: 指明参数2是位置还是ID, DRAW_WND_ 开头常量 // 返回值: // 返回是否删除成功 bool IDRAW_CALL iDraw_DelSysButton(HWND hWnd, int nPosition, int flags);</code></pre> <hr /> <h3>iDraw_Event_InsSysButton <code>最低要求版本: v1.2.101</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 插入系统按钮, 系统按钮索引是从右往左, 只有调用 iDraw_SubclassWindowEx, 或者 iDraw_SubclassWindow 的窗口才有效 // 参数: // 参数1: 有调用过 iDraw_SubclassWindowEx 的窗口句柄, 或者 iDraw_SubclassWindow 返回的窗口句柄 // 参数2: 要插入的位置, -1则插入到最后(最左边), 0则插入到第一个(最右边) // 参数3: 要插入的按钮ID // 参数4: 按钮数值 // 参数5: 指明参数2是位置还是ID, DRAW_WND_ 开头常量 // 返回值: // 返回是否插入成功 int IDRAW_CALL iDraw_Event_InsSysButton(HWND hWnd, int nPosition, int id, LPARAM param, int flags);</code></pre> <hr /> <h3>iDraw_SetButtonParam <code>最低要求版本: v1.2.101</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 设置系统按钮项目数值, 返回设置前的项目数值 // 参数: // 参数1: 有调用过 iDraw_SubclassWindowEx 的窗口句柄, 或者 iDraw_SubclassWindow 返回的窗口句柄 // 参数2: 要设置的按钮ID或位置 // 参数3: 按钮数值 // 参数4: 指明参数2是位置还是ID, DRAW_WND_ 开头常量 // 返回值: // 返回设置前的项目数值 LPARAM IDRAW_CALL iDraw_SetButtonParam(HWND hWnd, int nPosition, LPARAM param, int flags);</code></pre> <hr /> <h3>iDraw_GetButtonParam <code>最低要求版本: v1.2.101</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取系统按钮项目数值 // 参数: // 参数1: 有调用过 iDraw_SubclassWindowEx 的窗口句柄, 或者 iDraw_SubclassWindow 返回的窗口句柄 // 参数2: 要获取的按钮ID或位置 // 参数3: 指明参数2是位置还是ID, DRAW_WND_ 开头常量 // 返回值: // 返回按钮的项目数值 LPARAM IDRAW_CALL iDraw_GetButtonParam(HWND hWnd, int nPosition, int flags);</code></pre> <h2>新增结构</h2> <h3>IDRAW_STRUCT_WINDOW_ARGUMENT <code>最低要求版本: v1.2.101</code></h3> <pre><code> typedef struct IDRAW_STRUCT_WINDOW_ARGUMENT { ARGB crNormal; // 正常颜色, ARGB颜色, 为0则不使用 ARGB crHot; // 点燃颜色, ARGB颜色, 为0则不使用 ARGB crDown; // 按下颜色, ARGB颜色, 为0则不使用 ARGB crBack; // 背景颜色, ARGB颜色, 为0则不使用 ARGB crBorder; // 阴影边框颜色, 为0则没有边框, ARGB颜色 ARGB crBorder_nf; // 阴影边框未激活时的颜色, 为0则没有边框, ARGB颜色 ARGB crShadow; // 阴影颜色, ARGB颜色, 为0则不使用阴影 ARGB crShadow_nf; // 阴影未激活时的颜色, ARGB颜色, 为0则不使用阴影 ARGB crTitle; // 标题已激活颜色, ARGB颜色 ARGB crTitle_nf; // 标题未激活颜色, ARGB颜色 HWND hWnd; // 需要处理的窗口 int sysbtnWidth; // 系统按钮宽度 int sysbtnHeight; // 系统按钮高度 BOOL isSubClass; // 是否内部子类化该窗口, 为false则外部调用 iDraw_DrawWindowProc 把需要处理的消息传递进来 BOOL isUnicode; // 窗口是否为Unicode窗口, 为true则使用W版函数 BOOL isCasualMove; // 窗口随意移动, 为false则只有在标题栏中才能移动 BOOL isDrawIcon; // 是否绘画图标, 如果不绘画图标, 鼠标在图标位置点击不会出现菜单, 标题也会占用图标的位置 BOOL isDrawDefBtn; // 是否绘画默认的按钮, 如果为true, 则根据窗口风格, 加入系统按钮, 按钮的ID是 SC_ 开头的常量 int nMinWidth; // 最小窗口宽度 int nMinHeight; // 最小窗口高度 LPCANVAS hCanvas; // 绘画句柄, 外部提供一个绘画句柄, 如果不提供, 则内部会创建一个 LPEX_FONT hFont; // 绘画标题使用的字体, 如果外部不提供, 内部会创建一个 LPEX_BRUSH hbrTextTitle; // 绘画标题使用的字体, 如果外部不提供, 内部会创建一个 LPEX_BRUSH hbrTextTitle_nf; // 绘画标题使用的字体, 如果外部不提供, 内部会创建一个 }*LPIDRAW_STRUCT_WINDOW_ARGUMENT;</code></pre> <h3>IDRAW_STRUCT_DRAWSTRUCT <code>最低要求版本: v1.2.101</code></h3> <pre><code>// 绘画的结构 typedef struct IDRAW_STRUCT_DRAWSTRUCT { HWND hWnd; // 窗口句柄 LPCANVAS hCanvas; // 画布句柄 DRAW_STAGE stage; // 绘画阶段 const RECT_F* rc; // 绘画的矩形位置 int id; // 绘画系统按钮时使用, 这个表示当前绘画的按钮ID STATE state; // 状态, 系统按钮使用 LPARAM param; // 项目数值, 绘画事件绑定的项目数值 LPCWSTR lpszTitle; // 绘画标题时使用的标题文本 LPEX_IMAGE hIcon; // 绘画系统图标使用的图标 LPEX_BRUSH hbrText; // 绘画标题使用的画刷 }*LPIDRAW_STRUCT_DRAWSTRUCT;</code></pre> <h2>新增常量</h2> <h3>枚举常量 DRAW_STAGE <code>最低要求版本: v1.2.101</code></h3> <pre><code>// 绘画的阶段 enum DRAW_STAGE { DRAW_STAGE_BUTTON_BEGIN, // 绘画系统按钮开始, 即将绘画系统按钮, 返回true则不使用内部的绘制 DRAW_STAGE_BUTTON_END, // 绘画系统按钮结束, 按钮已经绘画完毕 DRAW_STAGE_ICON_BEGIN, // 绘画系统图标开始, 即将绘画系统图标, 返回true则不使用内部的绘制 DRAW_STAGE_ICON_END, // 绘画系统图标结束, 系统图标已经绘画完毕 DRAW_STAGE_TITLE_BEGIN, // 绘画标题开始, 即将绘画标题, 返回true则不使用内部的绘制 DRAW_STAGE_TITLE_END, // 绘画标题结束, 标题已经绘画完毕 };</code></pre> <hr /> <blockquote> <p><code>DRAW_WND_BYCOMMAND</code> <code>0x0000</code> <code>0</code> <code>v1.2.101</code> 指明参数 nPosition 使用的是ID</p> </blockquote> <hr /> <blockquote> <p><code>DRAW_WND_BYPOSITION</code> <code>0x0400</code> <code>1024</code> <code>v1.2.101</code> 指明参数 nPosition 使用的是索引</p> </blockquote> <hr />

页面列表

ITEM_HTML