IDC_ 功能ID
<p>[toc]</p>
<h2>iDraw_IDCall 函数</h2>
<ul>
<li>调用视觉库提供的功能</li>
</ul>
<h3>函数原型</h3>
<pre><code class="language-cpp">int IDRAW_CALL iDraw_IDCall(
int nCode,
WPARAM wParam,
LPARAM lParam
);</code></pre>
<h3>参数</h3>
<p><code>nCode</code> <code>类型: int</code></p>
<ul>
<li>要调用的功能号</li>
<li>有关视觉库提供的功能号列表, 请往下参阅视觉库定义的功能ID</li>
</ul>
<p><code>参数: wParam</code> <code>参数: lParam</code> <code>返回值</code></p>
<ul>
<li>请参阅功能号说明</li>
</ul>
<h3>要求</h3>
<ul>
<li>最低支持版本 <code>1.0.713</code></li>
</ul>
<h1>功能ID列表 <code>常量名</code> <code>16进制值</code> <code>10进制值</code> <code>最低支持版本</code></h1>
<hr />
<ul>
<li><code>IDC_IDRAW_STR2RGB</code> <code>0x08D00100</code> <code>147849472</code> <code>v1.0.801</code></li>
<li>将一个文本颜色转换成RGB颜色, wParam = 默认颜色, 调用失败返回这个颜色, lParam指向颜色文本指针</li>
</ul>
<hr />
<ul>
<li><code>IDC_IDRAW_STR2ARGB</code> <code>0x08D00101</code> <code>147849473</code> <code>v1.0.801</code></li>
<li>将一个文本颜色转换成ARGB颜色, wParam = 默认颜色, 调用失败返回这个颜色, lParam指向颜色文本指针</li>
</ul>
<hr />
<ul>
<li><code>IDC_IDRAW_RGB2STR</code> <code>0x08D00102</code> <code>147849474</code> <code>v1.0.801</code></li>
<li>将RGB颜色转换成文本 RGB(1,2,3), wParam=要转换的rgb, lParam = 至少20个WCHAR缓冲区指针, 返回写入字符数</li>
</ul>
<hr />
<ul>
<li><code>IDC_IDRAW_ARGB2STR</code> <code>0x08D00103</code> <code>147849475</code> <code>v1.0.801</code></li>
<li>将ARGB颜色转换成文本 ARGB(255,1,2,3), wParam=要转换的argb, lParam = 至少26个WCHAR缓冲区指针, 返回写入字符数</li>
</ul>
<hr />
<ul>
<li><code>IDC_IDRAW_GETWINDOWDATA</code> <code>0x08D00104</code> <code>147849476</code> <code>v1.0.801</code></li>
<li>获取窗口数据, wParam保留, lParam = 要获取的窗口句柄, 成功返回数据指针, 失败返回0</li>
</ul>
<hr />
<ul>
<li><code>IDC_IDRAW_GETCODEVISIBLERECT</code> <code>0x08D00105</code> <code>147849477</code> <code>v1.0.801</code></li>
<li>获取代码窗口可视的矩形, wParam保留, lParam = 接收矩形的指针(基于易语言主窗口位置)</li>
</ul>
<hr />
<ul>
<li><code>IDC_IDRAW_INLINEHOOK</code> <code>0x08D00200</code> <code>147849728</code> <code>v1.0.801</code></li>
<li>设置inlineHook, wParam = 原函数, lParam = 新函数, 返回原函数地址, 可以直接调用原函数</li>
</ul>
<hr />
<ul>
<li><code>IDC_IDRAW_UNINLINEHOOK</code> <code>0x08D00201</code> <code>147849729</code> <code>v1.0.801</code></li>
<li>取消inlineHook, wParam = 原函数, lParam = 新函数, 返回是否成功</li>
</ul>
<hr />
<ul>
<li><code>IDC_IDRAW_CREATEPOPUPMENU</code> <code>0x08D00203</code> <code>147849731</code> <code>v1.0.801</code></li>
<li>创建有自绘样式的弹出式菜单, 所有加入到这个弹出式菜单里的子菜单都会被自绘</li>
</ul>
<hr />
<ul>
<li><code>IDC_EIDE_GETCODEMANAGE</code> <code>0x08D00401</code> <code>147850241</code> <code>v1.0.801</code></li>
<li>获取IDE代码管理(IEIDE_CodeManage)类指针, 忽略wParam参数, lParma = 代码窗口窗口句柄, 为0则获取当前窗口</li>
</ul>
<hr />
<ul>
<li><code>IDC_EIDE_GETLINESPACING</code> <code>0x08D00402</code> <code>147850242</code> <code>v1.0.801</code></li>
<li>获取单行间隔, 忽略wParam和 lParam参数</li>
</ul>
<hr />
<ul>
<li><code>IDC_EIDE_SETLINESPACING</code> <code>0x08D00403</code> <code>147850243</code> <code>v1.0.801</code></li>
<li>暂未实现, 设置单行间隔, 忽略wParam和 lParam参数</li>
</ul>
<hr />
<ul>
<li><code>IDC_EIDE_GETLINEHEIGHT</code> <code>0x08D00404</code> <code>147850244</code> <code>v1.0.801</code></li>
<li>获取单行高度, 忽略wParam和 lParam参数</li>
</ul>
<hr />
<ul>
<li><code>IDC_EIDE_SETLINEHEIGHT</code> <code>0x08D00405</code> <code>147850245</code> <code>v1.0.801</code></li>
<li>暂未实现, 设置单行高度, 忽略wParam和 lParam参数</li>
</ul>
<hr />
<ul>
<li><code>IDC_EIDE_GETCODEWINDOW</code> <code>0x08D00406</code> <code>147850246</code> <code>v1.0.801</code></li>
<li>获取当前代码框句柄, 如果当前是起始页或者设计器窗口则返回0, 忽略wParam和 lParam参数</li>
</ul>
<hr />
<ul>
<li><code>IDC_EIDE_GETECOLOR</code> <code>0x08D00407</code> <code>147850247</code> <code>v1.0.801</code></li>
<li>获取易语言当前使用的配色, wParam = 缓冲区尺寸, lParam = 缓冲区地址, 返回写入缓冲区字节数, wParam/lParam为0则返回缓冲区需要的尺寸</li>
</ul>
<hr />
<ul>
<li><code>IDC_EIDE_SETECOLOR</code> <code>0x08D00408</code> <code>147850248</code> <code>v1.0.801</code></li>
<li>设置易语言当前使用的配色, wParam为0则lParam是完整的配色文件路径Unicode版, 不为0则lParam指向配色数据, wParam为数据尺寸, lParam = 根据wParam决定是什么值</li>
</ul>
<hr />
<ul>
<li><code>IDC_SCROLL_GETRECT</code> <code>0x08D00500</code> <code>147850496</code> <code>v1.0.801</code></li>
<li>获取滚动条位置, 可以通过这个事件修改边框达到指定绘画滚动条位置, wParam = pfn_GetScrollRect 回调函数, lParam = 窗口数据指针, 成功返回 wParam, 失败返回0
<pre><code>// pScroll = 滚动条对象
// pData = 滚动条所在的窗口数据
// isVScroll = 是否为纵向滚动条
// prc = 边框的4个边宽高, 修改这个值不会改变窗口的非客户区大小, 只会影响滚动条绘画的尺寸
// prc->left += 10; 左边边框增加10, 绘画时滚动条左边增加10个像素, 也就是会往右移动10个像素
// prc->top += 20; 顶边边框增加20, 绘画时滚动条顶边增加10个像素, 也就是会往下移动20个像素
// prc->right += 30; 右边边框增加30, 绘画时滚动条右边减少30个像素
// prc->bottom += 40; 底边边框增加40, 绘画时滚动条底边减少40个像素
// 左右一般是横向滚动条, 上下一般是纵向滚动条, 根据需要修改
bool IDRAW_CALL pfn_GetScrollRect(void* pScroll, LPOBJSTRUCT pData, bool isVScroll, RECT* prc)
{
return 0; // 返回0默认处理, 返回非0则拦截默认处理
}</code></pre></li>
</ul>
<hr />
<ul>
<li><code>IDC_SCROLL_CALCRECT</code> <code>0x08D00501</code> <code>147850497</code> <code>v1.0.801</code></li>
<li>计算滚动条位置, 可以通过这个事件修改窗口非客户区位置, wParam = pfn_CalcScroll 回调函数, lParam = 窗口数据指针, 成功返回 wParam, 失败返回0
<pre><code>// pScroll = 滚动条对象
// pData = 滚动条所在的窗口数据
// prc = WM_NCCALCSIZE 消息下 NCCALCSIZE_PARAMS 结构的 rgrc[0]
// LPNCCALCSIZE_PARAMS P = (LPNCCALCSIZE_PARAMS)lParam;
// prc = &p->rgrc[0]; prc 就是这个值, 需要对窗口的非客户区进行修改可以参考 WM_NCCALCSIZE 消息说明
// prc->left += 50; 左边非客户区加宽50, 左边框+50
// prc->top += 60; 顶边非客户区加宽60, 顶边框+60
// prc->right -= 70; 右边非客户区加宽70, 右边框+70
// prc->bottom -= 80; 底边非客户区加高80, 底边框+80
bool IDRAW_CALL pfn_CalcScroll(void* pScroll, LPOBJSTRUCT pData, RECT* prc)
{
return 0; // 返回0默认处理, 返回非0则拦截默认处理
}</code></pre></li>
</ul>
<hr />
<ul>
<li><code>IDC_SCROLL_DRAW</code> <code>0x08D00502</code> <code>147850498</code> <code>v1.0.801</code></li>
<li>
<p>绘画滚动条, wParam = pfn_DrawScroll 回调函数, lParam = 窗口数据指针, 成功返回 wParam, 失败返回0</p>
<pre><code>// 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 />
</li>
<li><code>IDC_IMOVE_GETWINDOWTYPE</code> <code>0x06D00001</code> <code>114294785</code> <code>v1.0.801</code></li>
<li>获取当前MDIClient 窗口下是显示什么窗口, -1=没有窗口, 0=代码区, 1=设计器窗口, 2=起始页, 高位是窗口类型, 0=未知, 1=窗口设计器, 2=普通程序集, 3=窗口程序集, 4=类, 5=全局变量, 6=数据类型, 7=DLL目录定义表, 8=常量, 9=图片资源, 10=声音资源</li>
</ul>
<hr />
<ul>
<li><code>IDC_IMOVE_GETCODETYPE</code> <code>0x06D00002</code> <code>114294786</code> <code>v1.0.801</code></li>
<li>获取当前MDIClient 窗口下是显示什么窗口类型, 0=未知, 1=窗口设计器, 2=普通程序集, 3=窗口程序集, 4=类, 5=全局变量, 6=数据类型, 7=DLL目录定义表, 8=常量, 9=图片资源, 10=声音资源, 不需要传递参数</li>
</ul>
<hr />