易IDE视觉库插件开发文档

插件开发


通用接口

<hr /> <h3>iDraw_IDCall <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 调用视觉库提供的功能 // // 参数: // 参数1: nCode, 类型: int, 功能编号, IDC_ 开头常量 // 参数2: wParam, 类型: WPARAM, 根据功能传递参数 // 参数3: lParam, 类型: LPARAM, 根据功能传递参数 // // 返回值: // 参考 IDC_ 开头常量的说明 int IDRAW_CALL iDraw_IDCall(int nCode, WPARAM wParam, LPARAM lParam);</code></pre> <hr /> <h3>iDraw_GetVersion <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取当前支持库的版本号 // // 参数: // 参数1: pMajor, 类型: int*, 接收主版本号指针, 可以为0 // 参数2: pMinor, 类型: int*, 接收次版本号指针, 可以为0 // 参数3: pBuild, 类型: int*, 接收编译版本号指针, 可以为0 // // 返回值: // 返回版本号unicode文本指针 LPCWSTR IDRAW_CALL iDraw_GetVersion(int* pMajor, int* pMinor, int* pBuild);</code></pre> <hr /> <h3>iDraw_GetVersionA <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取当前支持库的版本号 // // 参数: // 参数1: pMajor, 类型: int*, 接收主版本号指针, 可以为0 // 参数2: pMinor, 类型: int*, 接收次版本号指针, 可以为0 // 参数3: pBuild, 类型: int*, 接收编译版本号指针, 可以为0 // // 返回值: // 返回版本号文本指针 LPCSTR IDRAW_CALL iDraw_GetVersionA(int* pMajor, int* pMinor, int* pBuild);</code></pre> <hr /> <h3>iDraw_malloc <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取从支持库里申请内存, 内存是从 iDraw.fne 这个模块里申请的, 内部调用的是 malloc // // 参数: // 参数1: 申请的尺寸 // // 返回值: // 申请的内存地址, 出错返回0, 申请失败不会抛出异常 void* IDRAW_CALL iDraw_malloc(int size);</code></pre> <hr /> <h2>iDraw_free <code>最低要求版本: v1.1.1111</code></h2> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 释放 iDraw_malloc 申请的内存, 这里释放的是 iDraw.fne 这个模块的内存, 内部调用的是 free // 如果由其他模块去释放 iDraw_malloc 申请的内存, 一般会有一个堆不相同的异常 // // 参数: // 参数1: iDraw_malloc 返回的地址 // // 返回值: // 无返回值 void IDRAW_CALL iDraw_free(void* ptr);</code></pre> <hr /> <h3>iDraw_GetLastError <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取最后出错的信息, 返回unicode文本指针 // // 参数: // 无参数 // // 返回值: // 返回错误文本指针 LPCWSTR IDRAW_CALL iDraw_GetLastError();</code></pre> <hr /> <h3>iDraw_GetLastErrorA <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取最后出错的信息, 返回ansi文本指针 // // 参数: // 无参数 // // 返回值: // 返回错误文本指针 LPCSTR IDRAW_CALL iDraw_GetLastErrorA();</code></pre> <hr /> <h3>iDraw_Xml_GetNode <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取xml指定节点, 返回节点指针, 所有读写操作都需要节点指针 // // 参数: // 参数1: lpszNodeName, 类型: LPCWSTR, xml节点名 // 参数2: lpszNodeValue, 类型: LPCWSTR, 节点值文本, 可以为0 // 参数3: isCreate, 类型: BOOL, 节点不存在时是否创建该节点, 可以为0 // 参数4: lpIsNewNode, 类型: BOOL*, 传递一个指针接收返回的节点是否是新创建的, 可以为0 // // 返回值: // 获取到的值 ICTinyXml2_XMLNode IDRAW_CALL iDraw_Xml_GetNode(LPCWSTR lpszNodeName, LPCWSTR lpszNodeValue, BOOL isCreate, BOOL* lpIsNewNode);</code></pre> <hr /> <h3>iDraw_Xml_GetChildNode <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取xml指定节点下的子节点, 返回节点指针, 所有读写操作都需要节点指针 // // 参数: // 参数1: nodeParent, 类型: ICTinyXml2_XMLNode, xml节点, 如果这个值为0, 则功能与 iDraw_Xml_GetNode() 一样 // 参数2: lpszNodeName, 类型: LPCWSTR, 要获取的子节点节点名, 如果为空则调用失败 // 参数3: lpszNodeValue, 类型: LPCWSTR, 节点值文本, 可以为0 // 参数4: isCreate, 类型: BOOL, 节点不存在时是否创建该节点, 可以为0 // 参数5: lpIsNewNode, 类型: BOOL*, 传递一个指针接收返回的节点是否是新创建的, 可以为0 // // 返回值: // 获取到的值 ICTinyXml2_XMLNode IDRAW_CALL iDraw_Xml_GetChildNode(ICTinyXml2_XMLNode nodeParent, LPCWSTR lpszNodeName, LPCWSTR lpszNodeValue, BOOL isCreate, BOOL* lpIsNewNode);</code></pre> <hr /> <h3>iDraw_Xml_InsertChildNode <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 添加子节点到某个节点下, 如果被添加的节点已经存在, 则不会添加, 返回节点指针 // // 参数: // 参数1: pNode, 类型: ICTinyXml2_XMLNode, xml节点指针 // 参数2: lpszNodeName, 类型: LPCWSTR, 要插入的xml节点名 // 参数3: pszNodeValue, 类型: LPCWSTR, 要插入的xml节点值, 可以为0 // // 返回值: // 获取到的值 ICTinyXml2_XMLNode IDRAW_CALL iDraw_Xml_InsertChildNode(ICTinyXml2_XMLNode pNode, LPCWSTR lpszNodeName, LPCWSTR pszNodeValue);</code></pre> <hr /> <h3>iDraw_Xml_SetAttrValue <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 设置指定节点属性值 // // 参数: // 参数1: node, 类型: ICTinyXml2_XMLNode, xml节点名 // 参数2: lpszAttrName, 类型: LPCWSTR, 要设置的属性名 // 参数3: lpszAttrValue, 类型: LPCWSTR, 要设置的属性值 // // 返回值: // 获取到的值 bool IDRAW_CALL iDraw_Xml_SetAttrValue(ICTinyXml2_XMLNode node, LPCWSTR lpszAttrName, LPCWSTR lpszAttrValue);</code></pre> <hr /> <h3>iDraw_Xml_GetAttrValue <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取指定节点属性值, 返回属性值文本指针 // // 参数: // 参数1: node, 类型: ICTinyXml2_XMLNode, xml节点名 // 参数2: lpszAttrName, 类型: LPCWSTR, 要获取的属性名 // 参数3: isAttribute, 类型: BOOL*, 要获取的这个属性是否存在, 可以为0, 如果属性不存在, 这个值为0, 存在则为1 // // 返回值: // 获取到的值 LPCWSTR IDRAW_CALL iDraw_Xml_GetAttrValue(ICTinyXml2_XMLNode node, LPCWSTR lpszAttrName, BOOL* isAttribute);</code></pre> <hr /> <h3>iDraw_Xml_SetNodeValue <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 设置指定节点值 // // 参数: // 参数1: node, 类型: ICTinyXml2_XMLNode, xml节点指针 // 参数2: lpszNodeValue, 类型: LPCWSTR, 要设置的节点值 // // 返回值: // 获取到的值 bool IDRAW_CALL iDraw_Xml_SetNodeValue(ICTinyXml2_XMLNode node, LPCWSTR lpszNodeValue);</code></pre> <hr /> <h3>iDraw_Xml_SaveFile <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 保存xml到磁盘 // // 参数: // 无参数 // // 返回值: // 获取到的值 bool IDRAW_CALL iDraw_Xml_SaveFile();</code></pre> <hr /> <h3>iDraw_Xml_GetNodeValue <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取指定节点值, 返回节点值文本指针 // // 参数: // 参数1: node, 类型: ICTinyXml2_XMLNode, xml节点指针 // // 返回值: // 获取到的值 LPCWSTR IDRAW_CALL iDraw_Xml_GetNodeValue(ICTinyXml2_XMLNode node);</code></pre> <hr /> <h3>iDraw_SubclassWindow <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 子类化指定窗口, 并设置一些默认的绘画信息, 内部不会对其进行重画 // 支持库所有子类化都是通过这个接口进行二次封装 // 参数: // 参数1: hWnd, 类型: HWND, 需要子类化的窗口句柄 // 参数2: proc, 类型: pfn_SubClassWndProc, 接收子类化消息回调的函数, 有5个参数, 函数调用约定为 __stdcall, 返回值为 LRESULT 类型 // 前4个参数与普通子类化相同, 最后多的那个参数就是调用这个接口的返回值 // 参数3: reMoveBorder, 类型: bool, 是否需要删除边框, 为true则把边框相关的样式都删除 // 参数4: isSetBack, 类型: bool, 如果为true, 则会调用 SetClassLong() 设置背景画刷, 相同类名的窗口都会受到影响 // 返回值: // 返回窗口数据, 可以调用 iDraw_SetLong() 对窗口数据进行修改 // 如果需要自己接收消息, 请调用 iDraw_SetLong(窗口数据, IGL_WNDPROC, 回调函数), 可以参考 IGL_WNDPROC 常量说明 LPOBJSTRUCT IDRAW_CALL iDraw_SubclassWindow(HWND hWnd, pfn_SubClassWndProc proc, bool reMoveBorder, bool isSetBack);</code></pre> <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> <hr /> <h3>iDraw_CallWindowProc <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 调用原回调过程 // 参数: // 参数1: hWnd, 类型: HWND, 窗口句柄, 消息回调里的第一个参数 // 参数2: message, 类型: UINT, 消息值, 消息回调里的第二个参数 // 参数3: wParam, 类型: WPARAM, 参数1, 消息回调里的第三个参数 // 参数4: lParam, 类型: LPARAM, 参数2, 消息回调里的第四个参数 // 参数5: pData, 类型: LPOBJSTRUCT, 组件数据, 消息回调里的第五个参数 // 返回值: // 返回系统默认处理的返回值 LRESULT IDRAW_CALL iDraw_CallWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LPOBJSTRUCT pData);</code></pre> <hr /> <h3>iDraw_Subclass_Button <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 子类化并重画按钮, 按钮的类名为 Button // 参数: // 参数1: hWnd, 类型: HWND, 按钮的窗口句柄 // 参数2: reMoveBorder, 类型: bool, 是否删除边框 // 参数3: isSetBack, 类型: bool, 如果为true, 则会调用 SetClassLong() 设置背景画刷, 相同类名的窗口都会受到影响 // 参数4: reMoveClassStyle, 类型: DWORD, 需要删除的类样式, 为0则不删除 // 返回值: // 返回窗口数据, 可以调用 iDraw_SetLong() 对窗口数据进行修改 // 如果需要自己接收消息, 请调用 iDraw_SetLong(窗口数据, IGL_WNDPROC, 回调函数), 可以参考 IGL_WNDPROC 常量说明 LPOBJSTRUCT IDRAW_CALL iDraw_Subclass_Button(HWND hWnd, bool reMoveBorder, bool isSetBack, DWORD reMoveClassStyle);</code></pre> <hr /> <h3>iDraw_Subclass_Edit <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 子类化并重画编辑框, 编辑框的类名为 Edit // 参数: // 参数1: hWnd, 类型: HWND, 编辑框的窗口句柄 // 参数2: reMoveBorder, 类型: bool, 是否删除边框 // 参数3: isSetBack, 类型: bool, 如果为true, 则会调用 SetClassLong() 设置背景画刷, 相同类名的窗口都会受到影响 // 参数4: reMoveClassStyle, 类型: DWORD, 需要删除的类样式, 为0则不删除 // 参数5: isScroll, 类型: bool, 是否重画滚动条 // 返回值: // 返回窗口数据, 可以调用 iDraw_SetLong() 对窗口数据进行修改 // 如果需要自己接收消息, 请调用 iDraw_SetLong(窗口数据, IGL_WNDPROC, 回调函数), 可以参考 IGL_WNDPROC 常量说明 LPOBJSTRUCT IDRAW_CALL iDraw_Subclass_Edit(HWND hWnd, bool reMoveBorder, bool isSetBack, DWORD reMoveClassStyle, bool isScroll);</code></pre> <hr /> <h3>iDraw_Subclass_Static <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 子类化并重画标签, 标签的类名为 static // 参数: // 参数1: hWnd, 类型: HWND, 标签的窗口句柄 // 参数2: reMoveBorder, 类型: bool, 是否删除边框 // 参数3: isSetBack, 类型: bool, 如果为true, 则会调用 SetClassLong() 设置背景画刷, 相同类名的窗口都会受到影响 // 参数4: reMoveClassStyle, 类型: DWORD, 需要删除的类样式, 为0则不删除 // 返回值: // 返回窗口数据, 可以调用 iDraw_SetLong() 对窗口数据进行修改 // 如果需要自己接收消息, 请调用 iDraw_SetLong(窗口数据, IGL_WNDPROC, 回调函数), 可以参考 IGL_WNDPROC 常量说明 LPOBJSTRUCT IDRAW_CALL iDraw_Subclass_Static(HWND hWnd, bool reMoveBorder, bool isSetBack, DWORD reMoveClassStyle);</code></pre> <hr /> <h3>iDraw_Subclass_StatusBar <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 子类化并重画状态条, 状态条的类名为 msctls_statusbar32 // 参数: // 参数1: hWnd, 类型: HWND, 状态条的窗口句柄 // 参数2: reMoveBorder, 类型: bool, 是否删除边框 // 参数3: isSetBack, 类型: bool, 如果为true, 则会调用 SetClassLong() 设置背景画刷, 相同类名的窗口都会受到影响 // 参数4: reMoveClassStyle, 类型: DWORD, 需要删除的类样式, 为0则不删除 // 返回值: // 返回窗口数据, 可以调用 iDraw_SetLong() 对窗口数据进行修改 // 如果需要自己接收消息, 请调用 iDraw_SetLong(窗口数据, IGL_WNDPROC, 回调函数), 可以参考 IGL_WNDPROC 常量说明 LPOBJSTRUCT IDRAW_CALL iDraw_Subclass_StatusBar(HWND hWnd, bool reMoveBorder, bool isSetBack, DWORD reMoveClassStyle);</code></pre> <hr /> <h3>iDraw_Subclass_TreeView <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 子类化并重画树型框, 树型框的类名为 SysTreeView32 // 参数: // 参数1: hWnd, 类型: HWND, 树型框的窗口句柄 // 参数2: reMoveBorder, 类型: bool, 是否删除边框 // 参数3: isSetBack, 类型: bool, 如果为true, 则会调用 SetClassLong() 设置背景画刷, 相同类名的窗口都会受到影响 // 参数4: reMoveClassStyle, 类型: DWORD, 需要删除的类样式, 为0则不删除 // 参数5: nItemHeight, 类型: int, 树型框的项目高度 // 参数6: isScroll, 类型: bool, 是否重画树型框的滚动条 // 参数7: isHot, 类型: bool, 是否有热点效果 // 返回值: // 返回窗口数据, 可以调用 iDraw_SetLong() 对窗口数据进行修改 // 如果需要自己接收消息, 请调用 iDraw_SetLong(窗口数据, IGL_WNDPROC, 回调函数), 可以参考 IGL_WNDPROC 常量说明 LPOBJSTRUCT IDRAW_CALL iDraw_Subclass_TreeView(HWND hWnd, bool reMoveBorder, bool isSetBack, DWORD reMoveClassStyle, int nItemHeight, bool isScroll, bool isHot);</code></pre> <hr /> <h3>iDraw_Subclass_ListBox <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 子类化并重画列表框, 列表框的类名为 ListBox // 参数: // 参数1: hWnd, 类型: HWND, 列表框的窗口句柄 // 参数2: reMoveBorder, 类型: bool, 是否删除边框 // 参数3: isSetBack, 类型: bool, 如果为true, 则会调用 SetClassLong() 设置背景画刷, 相同类名的窗口都会受到影响 // 参数4: reMoveClassStyle, 类型: DWORD, 需要删除的类样式, 为0则不删除 // 参数5: nItemHeight, 类型: int, 列表框的项目高度 // 参数6: isScroll, 类型: bool, 是否重画滚动条 // 参数7: isHot, 类型: bool, 是否有热点效果 // 返回值: // 返回窗口数据, 可以调用 iDraw_SetLong() 对窗口数据进行修改 // 如果需要自己接收消息, 请调用 iDraw_SetLong(窗口数据, IGL_WNDPROC, 回调函数), 可以参考 IGL_WNDPROC 常量说明 LPOBJSTRUCT IDRAW_CALL iDraw_Subclass_ListBox(HWND hWnd, bool reMoveBorder, bool isSetBack, DWORD reMoveClassStyle, int nItemHeight, bool isScroll, bool isHot);</code></pre> <hr /> <h3>iDraw_Subclass_ListView <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 子类化并重画超级列表框, 超级列表框的类名为 SysListView32 // 参数: // 参数1: hWnd, 类型: HWND, 超级列表框的窗口句柄 // 参数2: reMoveBorder, 类型: bool, 是否删除边框 // 参数3: isSetBack, 类型: bool, 如果为true, 则会调用 SetClassLong() 设置背景画刷, 相同类名的窗口都会受到影响 // 参数4: reMoveClassStyle, 类型: DWORD, 需要删除的类样式, 为0则不删除 // 参数5: nItemHeight, 类型: int, 超级列表框的项目高度 // 参数6: isScroll, 类型: bool, 是否重画滚动条 // 参数7: isHot, 类型: bool, 是否有热点效果 // 参数8: fmt, 类型: int, 列表对齐方式 // 返回值: // 返回窗口数据, 可以调用 iDraw_SetLong() 对窗口数据进行修改 // 如果需要自己接收消息, 请调用 iDraw_SetLong(窗口数据, IGL_WNDPROC, 回调函数), 可以参考 IGL_WNDPROC 常量说明 LPOBJSTRUCT IDRAW_CALL iDraw_Subclass_ListView(HWND hWnd, bool reMoveBorder, bool isSetBack, DWORD reMoveClassStyle, int nItemHeight, bool isScroll, bool isHot, int fmt);</code></pre> <hr /> <h3>iDraw_Subclass_Tool <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 子类化并重画工具条, 工具条的类名为 ToolbarWindow32 // 参数: // 参数1: hWnd, 类型: HWND, 工具条的窗口句柄 // 参数2: reMoveBorder, 类型: bool, 是否删除边框 // 参数3: isSetBack, 类型: bool, 如果为true, 则会调用 SetClassLong() 设置背景画刷, 相同类名的窗口都会受到影响 // 参数4: reMoveClassStyle, 类型: DWORD, 需要删除的类样式, 为0则不删除 // 返回值: // 返回窗口数据, 可以调用 iDraw_SetLong() 对窗口数据进行修改 // 如果需要自己接收消息, 请调用 iDraw_SetLong(窗口数据, IGL_WNDPROC, 回调函数), 可以参考 IGL_WNDPROC 常量说明 LPOBJSTRUCT IDRAW_CALL iDraw_Subclass_Tool(HWND hWnd, bool reMoveBorder, bool isSetBack, DWORD reMoveClassStyle);</code></pre> <hr /> <h3>iDraw_Subclass_Tab <code>最低要求版本: v1.0.801</code></h3> <pre><code>// 函数功能: // 子类化并重画选择夹, 选择夹的类名为 SysTabControl32 // 参数: // 参数1: hWnd, 类型: HWND, 选择夹窗口句柄 // 参数2: reMoveBorder, 类型: bool, 是否删除边框 // 参数3: isSetBack, 类型: bool, 如果为true, 则会调用 SetClassLong() 设置背景画刷, 相同类名的窗口都会受到影响 // 参数4: reMoveClassStyle, 类型: DWORD, 需要删除的类样式, 为0则不删除 // 返回值: // 返回窗口数据, 可以调用 iDraw_SetLong() 对窗口数据进行修改 // 如果需要自己接收消息, 请调用 iDraw_SetLong(窗口数据, IGL_WNDPROC, 回调函数), 可以参考 IGL_WNDPROC 常量说明 LPOBJSTRUCT IDRAW_CALL iDraw_Subclass_Tab(HWND hWnd, bool reMoveBorder, bool isSetBack, DWORD reMoveClassStyle);</code></pre> <hr /> <h3>iDraw_Subclass_msctls_updown32 <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 子类化并重画调节器, 调节器的类名为 msctls_updown32 // 参数: // 参数1: hWnd, 类型: HWND, 调节器的窗口句柄 // 参数2: reMoveBorder, 类型: bool, 是否删除边框 // 参数3: isSetBack, 类型: bool, 如果为true, 则会调用 SetClassLong() 设置背景画刷, 相同类名的窗口都会受到影响 // 参数4: reMoveClassStyle, 类型: DWORD, 需要删除的类样式, 为0则不删除 // 返回值: // 返回窗口数据, 可以调用 iDraw_SetLong() 对窗口数据进行修改 // 如果需要自己接收消息, 请调用 iDraw_SetLong(窗口数据, IGL_WNDPROC, 回调函数), 可以参考 IGL_WNDPROC 常量说明 LPOBJSTRUCT IDRAW_CALL iDraw_Subclass_msctls_updown32(HWND hWnd, bool reMoveBorder, bool isSetBack, DWORD reMoveClassStyle);</code></pre> <hr /> <h3>iDraw_Subclass_ComboBox <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 子类化并重画组合框, 组合框的类名为 ComboBox // 参数: // 参数1: hWnd, 类型: HWND, 组合框的窗口句柄 // 参数2: reMoveBorder, 类型: bool, 是否删除边框 // 参数3: isSetBack, 类型: bool, 如果为true, 则会调用 SetClassLong() 设置背景画刷, 相同类名的窗口都会受到影响 // 参数4: reMoveClassStyle, 类型: DWORD, 需要删除的类样式, 为0则不删除 // 参数5: nItemHeight, 类型: int, 组合框的列表表项高度 // 返回值: // 返回窗口数据, 可以调用 iDraw_SetLong() 对窗口数据进行修改 // 如果需要自己接收消息, 请调用 iDraw_SetLong(窗口数据, IGL_WNDPROC, 回调函数), 可以参考 IGL_WNDPROC 常量说明 LPOBJSTRUCT IDRAW_CALL iDraw_Subclass_ComboBox(HWND hWnd, bool reMoveBorder, bool isSetBack, DWORD reMoveClassStyle, int nItemHeight);</code></pre> <hr /> <h3>iDraw_DrawScroll <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 重画指定控件的滚动条, 这个绘画有点问题, 不是所有控件都支持 // 参数: // 参数1: hWnd, 类型: HWND, 需要重画滚动条的窗口句柄 // 参数2: nListViewItemHeight, 类型: int, 如果是超级列表框, 则这个参数是超级列表框的表项高度, 超列是特别处理 // 参数3: isTreeView, 类型: bool, 如果是树型框, 则为真, 树型框会做特别处理 // 参数4: isCallSetScrollInfo, 类型: bool, 是否调用原函数 // 返回值: // 返回滚动条对象指针 LPVOID IDRAW_CALL iDraw_DrawScroll(HWND hWnd, int nListViewItemHeight, bool isTreeView, bool isCallSetScrollInfo);</code></pre> <hr /> <h3>iDraw_BeginPaint <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 初始化绘画信息, 必须是在 WM_PAINT 消息下调用, 配套的函数是 iDraw_EndPaint() // 会调用 BeginPaint, 会创建内存DC, 返回内存DC // 把组件设置的字体颜色, 背景画刷, 边框画笔都选入DC // 如果 不调用此接口, 也可以按一般处理WM_PAINT消息时处理 // // 参数: // 参数1: pData, 类型: LPOBJSTRUCT, 子类化的第五个参数, 或者是调用子类化接口的返回值 // 参数2: data, 类型: BEGIN_END_PAINT_STRUCT*, BEGIN_END_PAINT_STRUCT 结构指针, 内部会把初始化的数据记录到这个结构中 // 参数3: isDxRender, 类型: bool, 是否为DX渲染, 如果是DX渲染, 则内部会调用DX的初始化函数 // 参数4: isFillBack, 类型: bool, 是否填充背景, 如果为true, 则返回的HDC已经填充好了背景 // // 返回值: // 返回内存DC, DX渲染则返回0 HDC IDRAW_CALL iDraw_BeginPaint(LPOBJSTRUCT pData, BEGIN_END_PAINT_STRUCT* data, bool isDxRender, bool isFillBack);</code></pre> <hr /> <h3>iDraw_EndPaint <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 提交绘画信息, 必须是在 WM_PAINT 消息下调用, 调用此函数前必须已经调用了 iDraw_BeginPaint() // 把iDraw_BeginPaint() 时创建的内存DC拷贝到窗口上 // 并调用 EndPaint 提交绘画信息 // // 参数: // 参数1: data, 类型: BEGIN_END_PAINT_STRUCT*, BEGIN_END_PAINT_STRUCT 结构指针, 此函数会清理该结构的数据 // // 返回值: // 返回是否拷贝成功 bool IDRAW_CALL iDraw_EndPaint(BEGIN_END_PAINT_STRUCT* data);</code></pre> <hr /> <h3>iDraw_GetDxObject <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取DX绘画对象指针, 一般易语言用不上, 易语言使用 iDraw_ 开头的绘画相关函数 // // 参数: // 无参数 // // 返回值: // 返回dx绘画对象指针 ID2DDraw* IDRAW_CALL iDraw_GetDxObject();</code></pre> <hr /> <h3>iDraw_InterfaceArgument <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取初始化时的参数 // // 参数: // 参数1: pInfo, 类型: LPIDRAW_INFO*, 提供一个指针, 接收 传入 iDraw_Interface 接口的第一个参数 // 参数2: eWnd, 类型: IGetEWindow**, 提供一个指针, 接收 传入 iDraw_Interface 接口的第二个参数 // 参数3: reserved1, 类型: int*, 提供一个指针, 接收 传入 iDraw_Interface 接口的第三个参数 // 参数4: reserved2, 类型: int*, 提供一个指针, 接收 传入 iDraw_Interface 接口的第四个参数 // // 返回值: // 返回值暂未使用 int IDRAW_CALL iDraw_InterfaceArgument(LPIDRAW_INFO* pInfo, IGetEWindow** eWnd, int* reserved1, int* reserved2);</code></pre> <hr /> <h3>iDraw_UpdateShadow <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 重画阴影窗口, 注意: 如果绑定了 IRE_DRAW_BCAKGROUND 这个事件, 调用后会触发这个事件, 请不要在这个事件下调用该接口 // // 参数: // 参数1: bAsync, 类型: bool, 是否异步重画, 如果不需要马上绘画请设置为true, 为true则距离最后一次调用20毫秒后开始重画 // // 返回值: // 返回阴影窗口句柄 HWND IDRAW_CALL iDraw_UpdateShadow(bool bAsync);</code></pre> <hr /> <h3>iDraw_LoadExtFromFile <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 从文件加载ires数据, 成功返回资源句柄, 失败返回0 // // 参数: // 参数1: pszFile, 类型: LPCWSTR, ires的文件路径 // // 返回值: // 返回ires文件的资源句柄, 可以使用 User_GetIcon/User_GetIconDx 这两个函数来获取图标 IDRAW_HRESOURCE IDRAW_CALL iDraw_LoadExtFromFile(LPCWSTR pszFile);</code></pre> <hr /> <h3>iDraw_LoadExtFromMemory <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 从内存加载ires数据, 成功返回资源句柄, 失败返回0 // // 参数: // 参数1: ptr, 类型: const void*, ires的文件数据 // 参数2: size, 类型: int, 文数据尺寸 // // 返回值: // 返回ires文件的资源句柄, 可以使用 User_GetIcon/User_GetIconDx 这两个函数来获取图标 IDRAW_HRESOURCE IDRAW_CALL iDraw_LoadExtFromMemory(const void* ptr, int size);</code></pre> <hr /> <h3>iDraw_GetDefControlIcon <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取默认组件的资源句柄, 传递窗口句柄获取 // // 参数: // 参数1: hWnd, 类型: HWND, 从哪个窗口上获取, 现在只有 标准工具条, 程序/支持库/组件箱 树型框这几个有默认图标 // // 返回值: // 返回窗口关联的资源句柄 IDRAW_HRESOURCE IDRAW_CALL iDraw_GetDefControlIcon(HWND hWnd);</code></pre> <hr /> <h3>iDraw_UnBindWindow <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 取消插件所有绑定窗口资源的回调 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识符 // // 返回值: // 取消绑定成功返回true, 失败返回false bool IDRAW_CALL iDraw_UnBindWindow(LPCSTR guid);</code></pre> <hr /> <h3>iDraw_BindWindow <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 将资源绑定到窗口上, 下次重画这个窗口时会从这个资源获取图标 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识符 // 参数2: hWnd, 类型: HWND, 要绑定的窗口句柄 // 参数3: hResource, 类型: IDRAW_HRESOURCE, 加载的资源句柄, 如果这个参数为0, 且最后一个参数为0, 则不会加载设定的图标 // 参数4: callback, 类型: pfn_GetWindowIcon, 回调函数, 当这个窗口需要加载图标时调用, 为0则使用默认的资源加载, 如果没有默认的资源则不加载 // typedef LPWINDOW_ICON_DATA(IDRAW_CALL* pfn_GetWindowIcon)( HWND hWnd, IDRAW_HRESOURCE hResource, LPCWSTR pszID, void* pArg, RECT_F* prc, STATE state, UINT dpi ); // // 返回值: // 绑定成功返回true, 失败返回false bool IDRAW_CALL iDraw_BindWindow(LPCSTR guid, HWND hWnd, IDRAW_HRESOURCE hResource, pfn_GetWindowIcon callback);</code></pre> <hr /> <h3>iDraw_GetResourceFromHwnd <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 从窗口句柄获取资源, 如果没有绑定过这个窗口, 则返回0 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识符 // 参数2: hWnd, 类型: HWND, 之前绑定的窗口句柄 // 参数3: callback, 类型: pfn_GetWindowIcon*, 接收绑定时传递的回调函数, 可以为0 // // 返回值: // 绑定成功返回true, 失败返回false IDRAW_HRESOURCE IDRAW_CALL iDraw_GetResourceFromHwnd(LPCSTR guid, HWND hWnd, pfn_GetWindowIcon* callback);</code></pre> <hr /> <h3>iDraw_GetIcon <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 从资源句柄里获取图标数据 // // 参数: // 参数1: hResource, 类型: IDRAW_HRESOURCE, 资源句柄, 使用 iDraw_LoadExtFromFile/iDraw_LoadExtFromMemory/iDraw_GetDefControlIcon 返回的值 // 参数2: pszID, 类型: LPCWSTR, 图标ID // 参数3: prc, 类型: RECT_F*, RECT_F结构指针, 接收这个ID在资源中的位置 // 参数4: state, 类型: int, 要获取的状态, 目前只支持 STATE::HOT, STATE::DOWN, STATE::BAN, STATE::NORMAL 这4个 // 参数5: dpi // // 返回值: // 返回图标数据, 如果没有图标则返回0 LPWINDOW_ICON_DATA IDRAW_CALL iDraw_GetIcon(IDRAW_HRESOURCE hResource, LPCWSTR pszID, RECT_F* prc, int state, UINT dpi);</code></pre> <hr /> <h3>iDraw_GetIconDx <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 从资源句柄里获取图标数据 // // 参数: // 参数1: hResource, 类型: IDRAW_HRESOURCE, 资源句柄, 使用 iDraw_LoadExtFromFile/iDraw_LoadExtFromMemory/iDraw_GetDefControlIcon 返回的值 // 参数2: pszID, 类型: LPCWSTR, 图标ID // 参数3: prc, 类型: RECT_F*, RECT_F结构指针, 接收这个ID在资源中的位置 // 参数4: state, 类型: int, 要获取的状态, 目前只支持 STATE::HOT, STATE::DOWN, STATE::BAN, STATE::NORMAL 这4个 // 参数5: dpi // // 返回值: // 返回图标数据, 如果没有图标则返回0 LPWINDOW_ICON_DATA IDRAW_CALL iDraw_GetIconDx(IDRAW_HRESOURCE hResource, LPCWSTR pszID, RECT_F* prc, int state, UINT dpi);</code></pre> <hr /> <h3>iDraw_GetImageHandle <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 从图标数据里获取dx或者gdi+的图片指针, gdi+返回的是 Gdiplus::Bitmap* 指针, dx返回内部使用的图片指针 // // 参数: // 参数1: 图标数据, iDraw_GetIcon 或者 iDraw_MakeResourceReturn 返回的值 // 参数2: 是否返回gdiplus位图句柄, 为true则返回Gdiplus位图句柄, false则返回dx位图句柄 // // 返回值: // 返回位图句柄, 根据第二个参数返回 void* IDRAW_CALL iDraw_GetImageHandle(LPWINDOW_ICON_DATA pIconData, bool isGdiplus);</code></pre> <hr /> <h3>iDraw_InitPlugin <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 初始化插件, 只有初始化后才能往扩展菜单里添加菜单项和绑定资源 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识符 // 参数2: hModule, 类型: HMODULE, 插件的模块句柄 // 参数3: etInfo, 类型: PLUGIN_INFO*, 插件的插件信息结构指针, 在取消初始化前必须保证这个指针的存活 // 参数4: pfnMenuExt_Command, 类型: pfn_MenuExt_Command, 是否加入扩展菜单, 如果为false, 则调用 iDraw_MenuExt_Insert 会失败 // 参数5: callback, 类型: pfn_IDraw_Callback, 与视觉库通讯的回调函数 // // 返回值: // 返回错误码, 0=成功 bool IDRAW_CALL iDraw_InitPlugin(LPCSTR guid, HMODULE hModule, PLUGIN_INFO* etInfo, pfn_MenuExt_Command pfnMenuExt_Command, pfn_IDraw_Callback callback);</code></pre> <hr /> <h3>iDraw_UnInitPlugin <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 取消初始化插件, 把之前初始化时加入到扩展菜单的菜单项删除 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识符 // // 返回值: // 返回错误码, 0=成功 bool IDRAW_CALL iDraw_UnInitPlugin(LPCSTR guid);</code></pre> <hr /> <h3>iDraw_MenuExt_Insert <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 把菜单项插入到扩展菜单里, 菜单点击事件由 iDraw_InitPlugin 里的回调函数接收 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识符 // 参数2: uPosition, 类型: UINT, 加入的位置, -1则加入到最后 // 参数3: uFlags, 类型: UINT, 标识 // 参数4: uIDNewItem, 类型: UINT_PTR, 菜单项ID, 如果uFlags包含MF_POPUP 则这个参数是弹出式的菜单句柄 // 参数5: lpNewItem, 类型: LPCWSTR, 菜单名 // 参数6: param, 类型: LPARAM, 菜单项目数值 // // 返回值: // 返回错误码, 0=成功 bool IDRAW_CALL iDraw_MenuExt_Insert(LPCSTR guid, UINT uPosition, UINT uFlags, UINT_PTR uIDNewItem, LPCWSTR lpNewItem, LPARAM param);</code></pre> <hr /> <h3>iDraw_GetLong <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取子类化返回的指针的数据, 或者是子类化接收消息回调函数里的第五个参数 // // 参数: // 参数1: pData, 类型: LPOBJSTRUCT, 子类化返回的指针, 或者是子类化接收消息回调函数里的第五个参数 // 参数2: index, 类型: int, 数据索引, 具体请参考 IGL_ 开头常量 // // 返回值: // 获取到的值 LONG_PTR IDRAW_CALL iDraw_GetLong(LPOBJSTRUCT pData, int index);</code></pre> <hr /> <h3>iDraw_SetLong <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 设置子类化返回的指针的数据, 或者是子类化接收消息回调函数里的第五个参数, 返回设置前的数据 // // 参数: // 参数1: pData, 类型: LPOBJSTRUCT, 子类化返回的指针, 或者是子类化接收消息回调函数里的第五个参数 // 参数2: index, 类型: int, 数据索引, 具体请参考 IGL_ 开头常量 // 参数3: value, 类型: LONG_PTR, 要设置的数据 // // 返回值: // 返回设置前的值 LONG_PTR IDRAW_CALL iDraw_SetLong(LPOBJSTRUCT pData, int index, LONG_PTR value);</code></pre> <hr /> <h3>iDraw_CreateBrush <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 创建画刷, 不允许手动释放, 程序在结束时会释放, 相同颜色的画刷只会创建一次 // // 参数: // 参数1: cr, 类型: COLORREF, 需要创建的画刷, RGB颜色 // // 返回值: // 返回创建好的GDI画刷, 调用此函数创建的画刷不允许手动释放 HBRUSH IDRAW_CALL iDraw_CreateBrush(COLORREF cr);</code></pre> <hr /> <h3>iDraw_CreateBrushDx <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 创建画刷, 不允许手动释放, 程序在结束时会释放, 相同颜色的画刷只会创建一次 // // 参数: // 参数1: cr, 类型: DWORD, 需要创建的画刷, ARGB颜色 // // 返回值: // 返回创建好的画刷, 调用此函数创建的画刷不允许手动释放 LPEX_BRUSH IDRAW_CALL iDraw_CreateBrushDx(DWORD cr);</code></pre> <hr /> <h3>iDraw_CreatePen <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 创建画笔, 不允许手动释放, 程序在结束时会释放, 相同颜色只会创建一次 // // 参数: // 参数1: style, 类型: int, 需要创建的画刷, ARGB颜色 // // 返回值: // 返回创建好的GDI画刷, 调用此函数创建的画刷不允许手动释放 HPEN IDRAW_CALL iDraw_CreatePen(int style, int width, COLORREF cr);</code></pre> <hr /> <h3>iDraw_CreatePenDx <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 创建画笔, 不允许手动释放, 程序在结束时会释放, 相同颜色只会创建一次 // // 参数: // 参数1: style, 类型: int, 需要创建的画刷, ARGB颜色 // // 返回值: // 返回创建好的GDI画刷, 调用此函数创建的画刷不允许手动释放 LPEX_PEN IDRAW_CALL iDraw_CreatePenDx(int style, float width, DWORD cr);</code></pre> <hr /> <h3>iDraw_CreateFont <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 创建GDI字体, 不允许手动释放, 程序在结束时会释放, 相同字体只会创建一次 // // 参数: // 参数1: name, 类型: LPCWSTR, 字体名 // 参数2: lfHeight, 类型: int, 字体大小 // 参数3: style, 类型: int, 字体样式, 0=一般, 1=粗体, 2=斜体, 4=下划线, 8=删除线, 多个样式需要或起来 // // 返回值: // 返回创建好的GDI字体, 调用此函数创建的字体不允许手动释放 HFONT IDRAW_CALL iDraw_CreateFont(LPCWSTR name, int lfHeight, int style);</code></pre> <hr /> <h3>iDraw_CreateFontLf <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 创建GDI字体, 不允许手动释放, 程序在结束时会释放, 相同字体只会创建一次 // // 参数: // 参数1: LPLOGFONTW 结构指针 // // 返回值: // 返回创建好的GDI字体, 调用此函数创建的字体不允许手动释放 HFONT IDRAW_CALL iDraw_CreateFontLf(LPLOGFONTW lf);</code></pre> <hr /> <h3>iDraw_CreateFontDx <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 创建DX字体, 不允许手动释放, 程序在结束时会释放, 相同字体只会创建一次 // // 参数: // 参数1: name, 类型: LPCWSTR, 字体名 // 参数2: lfHeight, 类型: int, 字体大小 // 参数3: style, 类型: int, 字体样式, 0=一般, 1=粗体, 2=斜体, 4=下划线, 8=删除线, 多个样式需要或起来 // // 返回值: // 返回创建好的DX字体, 调用此函数创建的字体不允许手动释放 LPEX_FONT IDRAW_CALL iDraw_CreateFontDx(LPCWSTR name, int lfHeight, int style);</code></pre> <hr /> <h3>iDraw_CreateFontLfDx <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 创建DX字体, 不允许手动释放, 程序在结束时会释放, 相同字体只会创建一次 // // 参数: // 参数1: LPLOGFONTW 结构指针 // // 返回值: // 返回创建好的DX字体, 调用此函数创建的字体不允许手动释放 LPEX_FONT IDRAW_CALL iDraw_CreateFontLfDx(LPLOGFONTW lf);</code></pre> <hr /> <h3>iDraw_Event_GetMessageInfo <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 暂时未对外公开 // 通过窗口句柄和消息值获取该消息绑定的回调 // // 参数: // 参数1: hWnd, 类型: HWND, 窗口句柄 // 参数2: message, 类型: UINT, 注册的消息值 // 参数3: pArr, 类型: LPREGISTER_MESSAGE_INFO*, 缓冲区数组指针, 一个成员占用20个字节 // 参数4: bufSize, 类型: int, 缓冲区数组成员数 // // 返回值: // 返回写入缓冲区成员数 int IDRAW_CALL iDraw_Event_GetMessageInfo(HWND hWnd, UINT message, LPREGISTER_MESSAGE_INFO* pArr, int bufSize);</code></pre> <hr /> <h3>iDraw_Event_GetEventInfo <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 暂时未对外公开 // 通过事件ID获取回调信息 // // 参数: // 参数1: nEvent, 类型: UINT, 事件ID // 参数2: pArr, 类型: LPREGISTER_EVENT_INFO*, 缓冲区数组指针, 一个成员占用24个字节 // 参数3: bufSize, 类型: int, 缓冲区数组成员数 // // 返回值: // 返回写入缓冲区成员数 int IDRAW_CALL iDraw_Event_GetEventInfo(UINT nEvent, LPREGISTER_EVENT_INFO* pArr, int bufSize);</code></pre> <hr /> <h3>iDraw_Event_RegisterMessage <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 注册消息回调 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识 // 参数2: hWnd, 类型: HWND, 注册哪个窗口的消息, 如果该窗口不存在, 则调用失败 // 参数3: message, 类型: UINT, 注册的消息值, 当窗口触发这个消息时会调用回调函数 // 参数4: pfnBefore, 类型: pfn_SubClassWndProc, 处理前的回调函数, 窗口处理这个消息前调用这个回调函数, 为0则取消挂接这个事件 // 参数5: pfnAfter, 类型: pfn_SubClassWndProc, 处理后的回调函数, 窗口已经处理这个消息后调用这个回调函数, 为0则取消挂接这个事件 // 参数4 和 参数5 的回调原型都是相同的 // 需要5个参数, 整数返回值, 参数数量必须匹配, 否则会导致堆栈不平衡从而导致程序崩溃 // 整数型 回调函数(窗口句柄, 消息值, 参数1, 参数2, 窗口数据指针) // 与子类化接收消息函数一样 // // 返回值: // 返回错误码, 0=成功 int IDRAW_CALL iDraw_Event_RegisterMessage(LPCSTR guid, HWND hWnd, UINT message, pfn_SubClassWndProc pfnBefore, pfn_SubClassWndProc pfnAfter);</code></pre> <hr /> <h3>iDraw_Event_RegisterEvent <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 注册事件回调 // // 参数: // 参数1: guid, 类型: LPCSTR, 唯一标识符 // 参数2: nEvent, 类型: UINT, 需要注册的事件, 会传递到回调函数里 // 参数3: paramBefore, 类型: LONG_PTR, 处理前的回调函数参数, 这个参数会在调用 参数4 时传递过去 // 参数4: pfnBefore, 类型: pfn_Register_Event, 处理前的回调函数, 为0则取消挂接这个事件 // 参数5: paramAfter, 类型: LONG_PTR, 处理后的回调函数参数, 这个参数会在调用 参数6 时传递过去 // 参数6: pfnAfter, 类型: pfn_Register_Event, 处理后的回调函数, 为0则取消挂接这个事件 // 参数4 和 参数6 的回调原型都是相同的 // 需要3个参数, 整数返回值, 参数数量必须匹配, 否则会导致堆栈不平衡从而导致程序崩溃 // 整数型 回调函数(事件类型, 回调参数, 事件指针) // // 返回值: // 返回错误码, 0=成功 int IDRAW_CALL iDraw_Event_RegisterEvent(LPCSTR guid, UINT nEvent, LONG_PTR paramBefore, pfn_Register_Event pfnBefore, LONG_PTR paramAfter, pfn_Register_Event pfnAfter);</code></pre> <hr /> <h3>iDraw_UnRegister_Message <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 取消指定插件的所有消息回调 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识符 // // 返回值: // 返回错误码, 0=成功 int IDRAW_CALL iDraw_UnRegister_Message(LPCSTR guid);</code></pre> <hr /> <h3>iDraw_UnRegister_Event <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 取消指定插件的所有事件回调 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识符 // // 返回值: // 返回错误码, 0=成功 int IDRAW_CALL iDraw_UnRegister_Event(LPCSTR guid);</code></pre> <hr /> <h3>iDraw_GetInfo <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取pInfo的信息, 接口程序的第一个参数 // // 参数: // 参数1: pInfo, 类型: LPIDRAW_INFO, 接口程序的第一个参数 // 参数2: index, 类型: int, 获取的编号, IGI_ 开头常量 // 参数3: argument, 类型: LPARAM, 获取的参数, 根据编号传递 // // 返回值: // 获取到的值 LONG_PTR IDRAW_CALL iDraw_GetInfo(LPIDRAW_INFO pInfo, int index, LPARAM argument);</code></pre> <hr /> <h3>iDraw_SetInfo <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 设置pInfo的信息, 接口程序的第一个参数, 谨慎设置, 这里的配置是全局使用, 一旦出错就会导致崩溃 // // 参数: // 参数1: pInfo, 类型: LPIDRAW_INFO, 接口程序的第一个参数 // 参数2: index, 类型: int, 获取的编号, IGI_ 开头常量 // 参数3: value, 类型: LONG_PTR, 要设置的值 // // 返回值: // 返回设置之前的值 LONG_PTR IDRAW_CALL iDraw_SetInfo(LPIDRAW_INFO pInfo, int index, LONG_PTR value);</code></pre> <hr /> <h3>iDraw_EWindowThreadCallback <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 把函数放到易语言窗口线程里调用 // // 参数: // 参数1: pfnCallback, 类型: pfn_EWindowThreadCallback, 函数地址, 没有返回值, 必须没有返回值和一个整数型参数, 否则会堆栈不平衡导致崩溃 // 参数2: param, 类型: LPARAM, 传递到函数里的参数 // // 返回值: // 失败返回0, 成功返回非0值 bool IDRAW_CALL iDraw_EWindowThreadCallback(pfn_EWindowThreadCallback pfnCallback, LPARAM param);</code></pre> <hr /> <h3>iDraw_MakeResourceReturn <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 从图片数据里生成资源返回值, 所有指针必须保证存活, 内部不会申请内存来保存传递进来的文本和位图 // // 参数: // 参数1: pImg, 类型: const void*, 图片数据地址 // 参数2: size, 类型: int, 图片数据大小 // 参数3: text, 类型: LPCWSTR, 绘制当前项目显示的文本, 不会修改原组件文本, 只是绘画时显示这个文本, 可以为0 // 参数4: remarks, 类型: LPCWSTR, 备注文本, 可以为0 // 参数5: crText, 类型: DWORD*, 文本ARGB颜色, 可以为0, 不为0则必须是4个成员, 分别是 正常, 热点, 按下, 禁止 // 参数6: crBack, 类型: DWORD*, 背景ARGB颜色, 可以为0, 不为0则必须是4个成员, 分别是 正常, 热点, 按下, 禁止 // // 返回值: // 返回资源返回值, 返回值不使用时必须调用 iDraw_FreeResourceReturn 来释放 LPWINDOW_ICON_DATA IDRAW_CALL iDraw_MakeResourceReturn(const void* pImg, int size, LPCWSTR text, LPCWSTR remarks, DWORD* crText, DWORD* crBack);</code></pre> <hr /> <h3>iDraw_FreeResourceReturn <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 释放 iDraw_MakeResourceReturn() 生成的返回值 // // 参数: // 参数1: pData, 类型: LPWINDOW_ICON_DATA, iDraw_MakeResourceReturn() 的返回值 // // 返回值: // 返回是否释放成功 bool IDRAW_CALL iDraw_FreeResourceReturn(LPWINDOW_ICON_DATA pData);</code></pre> <hr /> <h3>iDraw_LoadGpImageFromMemory <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 从内存加载gdi+图片 // // 参数: // 参数1: pData, 类型: const void*, 图片数据 // 参数2: size, 类型: int, 图片数据大小 // // 返回值: // 成功返回gdi+图片指针, 失败返回0 void* IDRAW_CALL iDraw_LoadGpImageFromMemory(const void* pData, int size);</code></pre> <hr /> <h3>iDraw_FreeGpImage <code>最低要求版本: v1.0.801</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 释放从 iDraw_LoadGpImageFromMemory() 返回的值 // // 参数: // 参数1: hImg, 类型: void*, iDraw_LoadGpImageFromMemory() 返回的值 // // 返回值: // 成功返回true, 失败返回false bool IDRAW_CALL iDraw_FreeGpImage(void* hImg);</code></pre> <hr /> <h3>iDraw_Tool_InsertButton <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 添加按钮到接口工具条中, 成功返回工具条按钮ID, 触发工具条按钮被点击时会把这个ID传递过去 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识符, 触发点击/重画事件时会调用这个插件的回调函数 // 参数2: idCommand, 类型: int, 按钮的ID, 触发事件时会把这个ID传递过去 // 参数3: lpszTitle, 类型: LPCWSTR, 按钮标题, 可以为0, 为0则没有标题, 鼠标移动上去时弹出的提示说明标题, 加粗显示, 这个标题不会显示在工具条上 // 参数4: lpszTips, 类型: LPCWSTR, 按钮说明, 可以为0, 为0则没有说明, 鼠标移动上去时弹出的提示说明 // 参数5: param, 类型: LPARAM, 项目数值, 会跟随点击事件传递过去 // 参数6: pImageData, 类型: const void*, 图片数据指针, 这个是显示到工具条上的图标 // 参数7: nImageSize, 类型: int, 图片数据大小 // 参数8: pfnDraw, 类型: pfn_ToolDrawButton, 绘画回调函数, pfn_ToolDrawButton 类型 // typedef int(IDRAW_CALL* pfn_ToolDrawButton)(LPCANVAS hCanvas, int id, LPARAM param, const RECT_F* prc, STATE state, UINT dpi); // 返回值: // 成功返回工具条按钮ID, 失败返回0 int IDRAW_CALL iDraw_Tool_InsertButton(LPCSTR guid, int idCommand, LPCWSTR lpszTitle, LPCWSTR lpszTips, LPARAM param, const void* pImageData, int nImageSize, pfn_ToolDrawButton pfnDraw); </code></pre> <hr /> <h3>iDraw_Tool_DeleteButton <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 删除接口工具条的按钮, 只能删除自己插件添加的按钮 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识符, 触发点击/重画事件时会调用这个插件的回调函数 // 参数2: idCommand, 类型: int, 按钮的ID, 添加时的ID // // 返回值: // 返回是否成功 bool IDRAW_CALL iDraw_Tool_DeleteButton(LPCSTR guid, int idCommand); </code></pre> <hr /> <h3>iDraw_Tool_GetButtonData <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取接口工具条的按钮信息, 只能获取自己插件添加的按钮 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识符 // 参数2: idCommand, 类型: int, 按钮的ID, 添加时的ID // 参数3: lpszTitle, 类型: LPWSTR*, 为0则不接收, 接收按钮标题 // 参数4: lpszTips, 类型: LPWSTR*, 为0则不接收, 接收按钮说明 // 参数5: param, 类型: LPARAM*, 为0则不接收, 接收项目数值 // 参数6: pImageData, 类型: LPCVOID*, 为0则不接收, 接收图片数据指针 // 参数7: nImageSize, 类型: int*, 为0则不接收, 接收图片数据大小 // 参数8: pfnDraw, 类型: pfn_ToolDrawButton*, 为0则不接收, 接收绘画回调函数 // // 返回值: // 返回是否成功 bool IDRAW_CALL iDraw_Tool_GetButtonData(LPCSTR guid, int idCommand, LPWSTR* lpszTitle, LPWSTR* lpszTips, LPARAM* param, LPCVOID* pImageData, int* nImageSize, pfn_ToolDrawButton* pfnDraw); </code></pre> <hr /> <h3>iDraw_Tool_SetButtonData <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 设置接口工具条的按钮信息, 只能设置自己插件添加的按钮 // // 参数: // 参数1: guid, 类型: LPCSTR, 插件唯一标识符 // 参数2: idCommand, 类型: int, 按钮的ID, 添加时的ID // 参数3: lpszTitle, 类型: LPCWSTR, 为0则不设置, 设置按钮标题 // 参数4: lpszTips, 类型: LPCWSTR, 为0则不设置, 设置按钮说明 // 参数5: param, 类型: LPARAM, 为0则不设置, 设置项目数值 // 参数6: pImageData, 类型: const void*, 为0则不设置, 设置图片数据指针 // 参数7: nImageSize, 类型: int, 为0则不设置, 设置图片数据大小 // 参数8: pfnDraw, 类型: pfn_ToolDrawButton, 为0则不设置, 设置绘画回调函数 // // 返回值: // 返回是否成功 bool IDRAW_CALL iDraw_Tool_SetButtonData(LPCSTR guid, int idCommand, LPCWSTR lpszTitle, LPCWSTR lpszTips, LPARAM param, const void* pImageData, int nImageSize, pfn_ToolDrawButton pfnDraw); </code></pre> <hr /> <h3>iDraw_EIDE_Notify <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 调用易语言交互函数, 调用这个函数就相当于调用特殊库的 调用易系统功能() 命令 // // 参数: // 参数1: nMsg, 类型: int, 功能号, 功能号请参考易语言提供的 lib2.h 文件, NES_, NAS_, NRS_ 开头常量 // 参数2: dwParam1, 类型: DWORD, 请参阅 lib2.h 功能号说明 // 参数3: dwParam2, 类型: DWORD, 请参阅 lib2.h 功能号说明 // // 返回值: // 请参阅 lib2.h 功能号说明 int IDRAW_CALL iDraw_EIDE_Notify(int nMsg, DWORD dwParam1, DWORD dwParam2); </code></pre> <hr /> <h3>iDraw_EIDE_RunFunctions <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 调用易语言IDE接口功能, 调用这个函数相当于调用 iDraw_EIDE_Notify(NES_RUN_FUNC, 参数1, 数组[参数2, 参数3]); // // 参数: // 参数1: nMsg, 类型: int, 功能号, 功能号请参考易语言提供的 PublicIDEFunctions.h 文件, // 参数2: dwParam1, 类型: DWORD, 请参阅 PublicIDEFunctions.h 功能号说明 // 参数3: dwParam2, 类型: DWORD, 请参阅 PublicIDEFunctions.h 功能号说明 // // 返回值: // 如果该功能被处理返回真, 未被处理则返回假 bool IDRAW_CALL iDraw_EIDE_RunFunctions(int nMsg, DWORD dwParam1, DWORD dwParam2); </code></pre> <hr /> <h3>iDraw_STR2RGB <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 将一个文本颜色转换成RGB颜色 // // 参数: // 参数1: crDef, 类型: COLORREF, 默认颜色, 调用失败返回这个颜色 // 参数2: lpszColorText, 类型: LPCWSTR, 指向颜色文本指针 // // 返回值: // 返回转换好的RGB颜色值 COLORREF IDRAW_CALL iDraw_STR2RGB(COLORREF crDef, LPCWSTR lpszColorText); </code></pre> <hr /> <h3>iDraw_STR2ARGB <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 将一个文本颜色转换成ARGB颜色 // // 参数: // 参数1: crDef, 类型: ARGB, 默认颜色, 调用失败返回这个颜色 // 参数2: lpszColorText, 类型: LPCWSTR, 指向颜色文本指针 // // 返回值: // 返回转换好的ARGB颜色值 ARGB IDRAW_CALL iDraw_STR2ARGB(ARGB crDef, LPCWSTR lpszColorText); </code></pre> <hr /> <h3>iDraw_RGB2STR <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 将RGB颜色转换成文本 RGB(1,2,3) // // 参数: // 参数1: crDef, 类型: COLORREF, 要转换的rgb // 参数2: lpszBuffer, 类型: LPWSTR, 至少20个WCHAR缓冲区指针 // // 返回值: // 返回写入字符数 int IDRAW_CALL iDraw_RGB2STR(COLORREF crDef, LPWSTR lpszBuffer); </code></pre> <hr /> <h3>iDraw_ARGB2STR <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 将RGB颜色转换成文本 ARGB(255,1,2,3) // // 参数: // 参数1: crDef, 类型: ARGB, 要转换的argb // 参数2: lpszBuffer, 类型: LPWSTR, 至少26个WCHAR缓冲区指针 // // 返回值: // 返回写入字符数 int IDRAW_CALL iDraw_ARGB2STR(ARGB crDef, LPWSTR lpszBuffer); </code></pre> <hr /> <h3>iDraw_GetWindowData <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取窗口数据 // // 参数: // 参数1: hWnd, 类型: HWND, 要获取的窗口句柄 // // 返回值: // 成功返回数据指针, 失败返回0 LPOBJSTRUCT IDRAW_CALL iDraw_GetWindowData(HWND hWnd); </code></pre> <hr /> <h3>iDraw_GetCodeVisibleRect <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取代码窗口可视的矩形 // // 参数: // 参数1: prc, 类型: RECT*, 接收矩形的指针(基于易语言主窗口位置) // // 返回值: // 返回是否获取成功 BOOL IDRAW_CALL iDraw_GetCodeVisibleRect(RECT* prc); </code></pre> <hr /> <h3>iDraw_InlineHook <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 设置InlineHook, 内部提供两种hook方式 // // 参数: // 参数1: pOldFun, 类型: LPVOID, 被hook的地址 // 参数2: pNewFun, 类型: LPVOID, 接收hook的函数地址 // 参数3: hookMode, 类型: int, 使用的hook库, 0=detoursHook, 1=MinHook, 目前只提供这两种 // // 返回值: // 返回被hook地址的原地址, 可以直接调用这个地址 LPVOID IDRAW_CALL iDraw_InlineHook(LPVOID pOldFun, LPVOID pNewFun, int hookMode); </code></pre> <hr /> <h3>iDraw_UnInlineHook <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 设置InlineHook, 内部提供两种hook方式 // // 参数: // 参数1: pOldFun, 类型: LPVOID, iDraw_InlineHook 的返回值 // // 返回值: // 返回是否取消成功 bool IDRAW_CALL iDraw_UnInlineHook(LPVOID pOldFun); </code></pre> <hr /> <h3>iDraw_CreatePopupMenu <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 创建有自绘样式的弹出式菜单, 所有加入到这个弹出式菜单里的子菜单都会被自绘 // // 参数: // 无参数 // // 返回值: // 返回弹出式菜单句柄 HMENU IDRAW_CALL iDraw_CreatePopupMenu(); </code></pre> <hr /> <h3>iDraw_GetCodeManage <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取IDE代码管理(IEIDE_CodeManage)类指针 // // 参数: // 参数1: hCode, 类型: HWND, 代码窗口窗口句柄, 为0则获取当前窗口 // // 返回值: // 返回代码窗口对应的 IEIDE_CodeManage 类指针, 失败返回0 IEIDE_CodeManage* IDRAW_CALL iDraw_GetCodeManage(HWND hCode); </code></pre> <hr /> <h3>iDraw_GetCodeWindow <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取当前代码框句柄, 如果当前是起始页或者设计器窗口则返回0 // // 参数: // 无参数 // // 返回值: // 返回当前代码框句柄, 如果当前是起始页或者设计器窗口则返回0 HWND IDRAW_CALL iDraw_GetCodeWindow(); </code></pre> <hr /> <h3>iDraw_Scroll_GetRect <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取滚动条位置, 可以通过这个事件修改边框达到指定绘画滚动条位置 // // 参数: // 参数1: pfnCallback, 类型: pfn_GetScrollRect, pfn_GetScrollRect 回调函数 // 参数2: pData, 类型: LPOBJSTRUCT, 窗口数据指针 // // 返回值: // 成功返回非0, 失败返回0 BOOL IDRAW_CALL iDraw_Scroll_GetRect(pfn_GetScrollRect pfnCallback, LPOBJSTRUCT pData);</code></pre> <pre><code>typedef bool (CALLBACK* pfn_GetScrollRect)(void* pScroll, LPOBJSTRUCT pData, bool isVScroll, RECT* prc); // pScroll = 滚动条对象 // pData = 滚动条所在的窗口数据 // isVScroll = 是否为纵向滚动条 // prc = 边框的4个边宽高, 修改这个值不会改变窗口的非客户区大小, 只会影响滚动条绘画的尺寸 // prc-&gt;left += 10; 左边边框增加10, 绘画时滚动条左边增加10个像素, 也就是会往右移动10个像素 // prc-&gt;top += 20; 顶边边框增加20, 绘画时滚动条顶边增加10个像素, 也就是会往下移动20个像素 // prc-&gt;right += 30; 右边边框增加30, 绘画时滚动条右边减少30个像素 // prc-&gt;bottom += 40; 底边边框增加40, 绘画时滚动条底边减少40个像素 // 左右一般是横向滚动条, 上下一般是纵向滚动条, 根据需要修改 bool IDRAW_CALL pfn_GetScrollRect(void* pScroll, LPOBJSTRUCT pData, bool isVScroll, RECT* prc) { return 0; // 返回0默认处理, 返回非0则拦截默认处理 }</code></pre> <hr /> <h3>iDraw_Scroll_CalcRect <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 计算滚动条位置, 可以通过这个事件修改窗口非客户区位置 // // 参数: // 参数1: pfnCallback, 类型: pfn_CalcScroll, pfn_CalcScroll 回调函数 // 参数2: pData, 类型: LPOBJSTRUCT, 窗口数据指针 // // 返回值: // 成功返回非0, 失败返回0 BOOL IDRAW_CALL iDraw_Scroll_CalcRect(pfn_CalcScroll pfnCallback, LPOBJSTRUCT pData);</code></pre> <pre><code>typedef bool (CALLBACK* pfn_CalcScroll)(void* pScroll, LPOBJSTRUCT pData, RECT* prc); // pScroll = 滚动条对象 // pData = 滚动条所在的窗口数据 // prc = WM_NCCALCSIZE 消息下 NCCALCSIZE_PARAMS 结构的 rgrc[0] // LPNCCALCSIZE_PARAMS P = (LPNCCALCSIZE_PARAMS)lParam; // prc = &amp;p-&gt;rgrc[0]; prc 就是这个值, 需要对窗口的非客户区进行修改可以参考 WM_NCCALCSIZE 消息说明 // prc-&gt;left += 50; 左边非客户区加宽50, 左边框+50 // prc-&gt;top += 60; 顶边非客户区加宽60, 顶边框+60 // prc-&gt;right -= 70; 右边非客户区加宽70, 右边框+70 // prc-&gt;bottom -= 80; 底边非客户区加高80, 底边框+80 bool IDRAW_CALL pfn_CalcScroll(void* pScroll, LPOBJSTRUCT pData, RECT* prc) { return 0; // 返回0默认处理, 返回非0则拦截默认处理 }</code></pre> <hr /> <h3>iDraw_Scroll_Draw <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 绘画滚动条 // // 参数: // 参数1: pfnCallback, 类型: pfn_DrawScroll, pfn_DrawScroll 回调函数 // 参数2: pData, 类型: LPOBJSTRUCT, 窗口数据指针 // // 返回值: // 成功返回非0, 失败返回0 BOOL IDRAW_CALL iDraw_Scroll_Draw(pfn_DrawScroll pfnCallback, LPOBJSTRUCT pData);</code></pre> <pre><code>typedef bool (CALLBACK* pfn_DrawScroll)(void* pScroll, LPOBJSTRUCT pData, bool isVScroll, HDC hdc, int type, RECT_F* rcDraw); // pScroll = 滚动条对象 // pData = 滚动条所在的窗口数据 // isVScroll = 是否为纵向滚动条 // hdcWindow = 滚动条的绘画DC // type = SCROLL_DRAWTYPE 枚举常量, 表示当前的绘画阶段 // rcDraw = 滚动条默认绘画的位置 bool IDRAW_CALL pfn_DrawScroll(void* pScroll, LPOBJSTRUCT pData, bool isVScroll, HDC hdcWindow, int type, RECT_F* rcDraw) { return false; // 返回true则拦截绘画, 返回false则内部继续绘画 }</code></pre> <hr /> <h3>iDraw_GetMDIClientType <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取当前MDIClient 窗口下是显示什么窗口 // -1=没有窗口, 0=代码区, 1=设计器窗口, 2=起始页, 高位是窗口类型, 0=未知, 1=窗口设计器, 2=普通程序集, 3=窗口程序集, 4=类, 5=全局变量, 6=数据类型, 7=DLL目录定义表, 8=常量, 9=图片资源, 10=声音资源 // // 参数: // 无参数 // // 返回值: // 返回以下值之一: -1=没有窗口, 0=代码区, 1=设计器窗口, 2=起始页, 高位是窗口类型, 0=未知, 1=窗口设计器, 2=普通程序集, 3=窗口程序集, 4=类, 5=全局变量, 6=数据类型, 7=DLL目录定义表, 8=常量, 9=图片资源, 10=声音资源 int IDRAW_CALL iDraw_GetMDIClientType(); </code></pre> <hr /> <h3>iDraw_GetMDIClientCodeType <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取当前MDIClient 窗口下是显示什么窗口类型 // 0=未知, 1=窗口设计器, 2=普通程序集, 3=窗口程序集, 4=类, 5=全局变量, 6=数据类型, 7=DLL目录定义表, 8=常量, 9=图片资源, 10=声音资源 // // 参数: // 无参数 // // 返回值: // 返回以下值之一: 0=未知, 1=窗口设计器, 2=普通程序集, 3=窗口程序集, 4=类, 5=全局变量, 6=数据类型, 7=DLL目录定义表, 8=常量, 9=图片资源, 10=声音资源 int IDRAW_CALL iDraw_GetMDIClientCodeType(); </code></pre> <hr /> <h3>iDraw_GetScrollData <code>最低要求版本: v1.1.1111</code></h3> <pre><code>////////////////////////////////////////////////////////////////////////// // 函数功能: // 获取滚动条对象数据 // // 参数: // 参数1: pScroll, 类型: LPVOID, 滚动条对象指针 // 参数2: ptr, 类型: IDRAW_STRUCT_SCROLL_DATA*, 接收滚动条数据指针, 调用前需要把 IDRAW_STRUCT_SCROLL_DATA.cbSize 赋值 // // 返回值: // 返回是否成功 BOOL IDRAW_CALL iDraw_GetScrollData(LPVOID pScroll, IDRAW_STRUCT_SCROLL_DATA* ptr); </code></pre>

页面列表

ITEM_HTML