基础数据类型
<p>[toc]</p>
<blockquote>
<h3>PLUGIN_INFO</h3>
<p>数据类型原型</p>
<pre><code>// 助手插件信息结构
typedef struct PLUGIN_INFO
{
DWORD cbSize; // 结构尺寸
LPCSTR name; // 插件名字
LPCSTR remarks; // 描述
LPCSTR version; // 版本
LPCSTR author; // 作者
DWORD Versionlimit; // 版本限制
void* Dependence; // 依赖插件
LPCSTR guid; // 插件唯一标识符
pfn_MenuExt_Command pfnMenuExt_Command; // 菜单被调用事件
pfn_IDraw_Callback pfnCallback; // 与视觉库通讯的回调函数
}*LPPLUGIN_INFO;</code></pre>
</blockquote>
<hr />
<blockquote>
<h3>RECT_F</h3>
<p>数据类型原型</p>
<pre><code>typedef struct RECT_F
{
float left; // 左边
float top; // 顶边
float right; // 右边
float bottom; // 底边
}*LPRECT_F;
typedef const RECT_F* LPCRECT_F;</code></pre>
</blockquote>
<hr />
<blockquote>
<h3>RECTROUNDED_F</h3>
<p>数据类型原型</p>
<pre><code>typedef struct RECTROUNDED_F : RECT_F
{
float radiusX; // 圆角
float radiusY; // 圆角
}*LPRECTROUNDED_F;
typedef const RECTROUNDED_F* LPCRECTROUNDED_F;</code></pre>
</blockquote>
<hr />
<blockquote>
<h3>POINT_F</h3>
<p>数据类型原型</p>
<pre><code>typedef struct POINT_F
{
float x; // 坐标点x
float y; // 坐标点y
}*LPPOINT_F;
typedef const POINT_F* LPCPOINT_F;</code></pre>
</blockquote>
<hr />
<blockquote>
<h3>ELLIPSE_F</h3>
<p>数据类型原型</p>
<pre><code>typedef struct ELLIPSE_F : POINT_F
{
float radiusX; // 半径宽度
float radiusY; // 半径高度
}*LPELLIPSE_F;
typedef const ELLIPSE_F* LPCELLIPSE_F;</code></pre>
</blockquote>
<hr />
<blockquote>
<h3>LINEPOINT_F</h3>
<p>数据类型原型</p>
<pre><code>typedef struct LINEPOINT_F : POINT_F
{
float x1; // 第二个横向坐标
float y1; // 第二个纵向坐标
}*LPLINEPOINT_F;
typedef const LINEPOINT_F* LPCLINEPOINT_F;</code></pre>
</blockquote>
<hr />
<blockquote>
<h3>EX_IMAGELOCK</h3>
<p>数据类型原型</p>
<pre><code>// 图像锁定结构
typedef struct EX_IMAGELOCK
{
UINT width; // 锁定图像的宽度, 内部使用, 不允许修改
UINT height; // 锁定图像的高度, 内部使用, 不允许修改
UINT stride; // 内部使用, 不允许修改
void* pScan0; // 内部使用, 不允许修改
void* pLock; // 内部使用, 不允许修改
}*PEX_IMAGELOCK, * LPEX_IMAGELOCK;</code></pre>
</blockquote>
<hr />
<blockquote>
<h3>EWINDOW_MDICHILD</h3>
<p>数据类型原型</p>
<pre><code>// MDIClient 窗口句柄结构
struct EWINDOW_MDICHILD
{
HWND hMDIClient1; // MDI下的第一层窗口
HWND hMDIClient2; // MDI下的第二层窗口
HWND hMDIClient3; // MDI下的第三层窗口, 可以根据这个窗口判断是否为起始页或者设计器窗口或者代码区
HWND hMDIClient4; // MDI下的第四层窗口, 如果是代码区, 这个窗口就是代码窗口
HWND hVScroll; // 纵向滚动条
HWND hHScroll; // 横向滚动条
};</code></pre>
</blockquote>
<hr />
<blockquote>
<h3>BEGIN_END_PAINT_STRUCT</h3>
<p>数据类型原型</p>
<pre><code>// 各个组件开始和结束绘画使用的结构
struct BEGIN_END_PAINT_STRUCT : PAINTSTRUCT
{
RECT rc; // 组件客户区矩形
int cxClient; // 客户区宽度
int cyClient; // 客户区高度
LPVOID pFont; // 内部使用, 不允许修改
LPVOID hFont; // 内部使用, 不允许修改
LPVOID md; // 内部使用, 不允许修改
BOOL isDxRender; // 内部使用, 不允许修改
LPOBJSTRUCT pData; // 窗口数据
};</code></pre>
</blockquote>
<hr />
<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>
<hr />
<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>