易IDE视觉库插件开发文档

插件开发


1.2.101

[toc]

1.2.101

> 2022-01-01 易IDE视觉库1.2.101正式版 > 修复: > 1. 开启行号插件后切换代码选择夹导致行号显示异常的问题 > 2. 配色无法保存的问题 > 【注意】1.1的时候对clr文件是只读 > 1.2加上了写的权限, 请注意备份clr文件 > 易语言可能会出现配色错误的bug, 导致clr被修改 > 3. D2D资源失效会重新创建资源, 如果都失败, 那只会弹窗一次 > 开发环境没有出现过这个问题, 所以, 请把重现方法发送给006, 让006处理 > 4. 组件箱底部显示白条的问题 > 5. 新建主题可能失败的问题 > 6. 修复状态夹内的输出/提示等组件被隐藏的问题 > 7. 修复窗口设计器有可能不重画滚动条的问题 > 8. >
> 新增: > 1. 新增几个与重绘窗口相关的接口 > 可以一个命令让窗口拥有与视觉库相同的视觉效果 > 详情请参考开发文档: https://www.showdoc.com.cn/1503905757897784/8233446128916707 > 2. 树型框增加了Ctrl + F 搜索项目, F3搜索下一个, Shift + F3 搜索上一个 > 3.

新增函数


iDraw_DrawWindowProc 最低要求版本: v1.2.101

//////////////////////////////////////////////////////////////////////////
// 函数功能: 
//      把窗口的消息转到重画窗口的过程去处理
// 参数:
//      参数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);

iDraw_DrawGetDefArg 最低要求版本: v1.2.101

//////////////////////////////////////////////////////////////////////////
// 函数功能: 
//      获取默认参数
// 参数:
//      参数1: 需要重画的窗口句柄, 为0则在返回后自己给窗口句柄赋值
//      参数2: DRAW_STRUCT_WINDOW_ARGUMENT 结构指针, 内部把默认参数填充到这个结构里
// 返回值:
//      返回保存窗口信息的结构指针, 组件的各种配色信息都在这个结构中保存
bool IDRAW_CALL iDraw_DrawGetDefArg(HWND hWnd, LPDRAW_STRUCT_WINDOW_ARGUMENT arg);

iDraw_SubclassWindowEx 最低要求版本: v1.2.101

//////////////////////////////////////////////////////////////////////////
// 函数功能: 
//      把一个顶层窗口重画成与视觉库相同的视觉效果
// 参数:
//      参数1: 需要重画的窗口句柄
//      参数2: DRAW_STRUCT_WINDOW_ARGUMENT 结构指针, 为0则使用与当前主题匹配的配色信息
// 返回值:
//      返回保存窗口信息的结构指针, 组件的各种配色信息都在这个结构中保存
LPOBJSTRUCT IDRAW_CALL iDraw_SubclassWindowEx(HWND hWnd, LPDRAW_STRUCT_WINDOW_ARGUMENT arg);

iDraw_CreateWindow 最低要求版本: v1.2.101

//////////////////////////////////////////////////////////////////////////
// 函数功能: 
//      创建弹出式窗口, 这个窗口和视觉库有相同的视觉效果
// 参数:
//      参数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);

iDraw_Event_Draw 最低要求版本: v1.2.101

//////////////////////////////////////////////////////////////////////////
// 函数功能: 
//      挂接窗口绘画事件, 只有调用 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);

iDraw_Event_SysButtonClick 最低要求版本: v1.2.101

//////////////////////////////////////////////////////////////////////////
// 函数功能: 
//      挂接系统按钮点击事件, 只有调用 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);

iDraw_AddSysButton 最低要求版本: v1.2.101

//////////////////////////////////////////////////////////////////////////
// 函数功能: 
//      添加系统按钮, 系统按钮索引是从右往左, 只有调用 iDraw_SubclassWindowEx, 或者 iDraw_SubclassWindow 的窗口才有效
// 参数:
//      参数1: 有调用过 iDraw_SubclassWindowEx 的窗口句柄, 或者 iDraw_SubclassWindow 返回的窗口句柄
//      参数2: 按钮的ID, 如果有相同ID, 则替换数值
//      参数3: 按钮数值
// 返回值:
//      返回新增加按钮的索引, 系统按钮索引是从右往左
int IDRAW_CALL iDraw_AddSysButton(HWND hWnd, int id, LPARAM param);

iDraw_DelSysButton 最低要求版本: v1.2.101

//////////////////////////////////////////////////////////////////////////
// 函数功能: 
//      删除系统按钮, 系统按钮索引是从右往左, 只有调用 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);

iDraw_Event_InsSysButton 最低要求版本: v1.2.101

//////////////////////////////////////////////////////////////////////////
// 函数功能: 
//      插入系统按钮, 系统按钮索引是从右往左, 只有调用 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);

iDraw_SetButtonParam 最低要求版本: v1.2.101

//////////////////////////////////////////////////////////////////////////
// 函数功能: 
//      设置系统按钮项目数值, 返回设置前的项目数值
// 参数:
//      参数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);

iDraw_GetButtonParam 最低要求版本: v1.2.101

//////////////////////////////////////////////////////////////////////////
// 函数功能: 
//      获取系统按钮项目数值
// 参数:
//      参数1: 有调用过 iDraw_SubclassWindowEx 的窗口句柄, 或者 iDraw_SubclassWindow 返回的窗口句柄
//      参数2: 要获取的按钮ID或位置
//      参数3: 指明参数2是位置还是ID, DRAW_WND_ 开头常量
// 返回值:
//      返回按钮的项目数值
LPARAM IDRAW_CALL iDraw_GetButtonParam(HWND hWnd, int nPosition, int flags);

新增结构

IDRAW_STRUCT_WINDOW_ARGUMENT 最低要求版本: v1.2.101


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;

IDRAW_STRUCT_DRAWSTRUCT 最低要求版本: v1.2.101

// 绘画的结构
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;

新增常量

枚举常量 DRAW_STAGE 最低要求版本: v1.2.101

// 绘画的阶段
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,       // 绘画标题结束, 标题已经绘画完毕
};

> DRAW_WND_BYCOMMAND 0x0000 0 v1.2.101 > 指明参数 nPosition 使用的是ID


> DRAW_WND_BYPOSITION 0x0400 1024 v1.2.101 > 指明参数 nPosition 使用的是索引


页面列表

ITEM_HTML