基础数据类型
[toc]
> ###PLUGIN_INFO
> 数据类型原型
> > // 助手插件信息结构 > 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; >
> ###RECT_F
> 数据类型原型
> > typedef struct RECT_F > { > float left; // 左边 > float top; // 顶边 > float right; // 右边 > float bottom; // 底边 > }*LPRECT_F; > typedef const RECT_F* LPCRECT_F; >
> ###RECTROUNDED_F
> 数据类型原型
> > typedef struct RECTROUNDED_F : RECT_F > { > float radiusX; // 圆角 > float radiusY; // 圆角 > }*LPRECTROUNDED_F; > typedef const RECTROUNDED_F* LPCRECTROUNDED_F; >
> ###POINT_F
> 数据类型原型
> > typedef struct POINT_F > { > float x; // 坐标点x > float y; // 坐标点y > }*LPPOINT_F; > typedef const POINT_F* LPCPOINT_F; >
> ###ELLIPSE_F
> 数据类型原型
> > typedef struct ELLIPSE_F : POINT_F > { > float radiusX; // 半径宽度 > float radiusY; // 半径高度 > }*LPELLIPSE_F; > typedef const ELLIPSE_F* LPCELLIPSE_F; >
> ###LINEPOINT_F
> 数据类型原型
> > typedef struct LINEPOINT_F : POINT_F > { > float x1; // 第二个横向坐标 > float y1; // 第二个纵向坐标 > }*LPLINEPOINT_F; > typedef const LINEPOINT_F* LPCLINEPOINT_F; >
> ###EX_IMAGELOCK
> 数据类型原型
> > // 图像锁定结构 > typedef struct EX_IMAGELOCK > { > UINT width; // 锁定图像的宽度, 内部使用, 不允许修改 > UINT height; // 锁定图像的高度, 内部使用, 不允许修改 > UINT stride; // 内部使用, 不允许修改 > void* pScan0; // 内部使用, 不允许修改 > void* pLock; // 内部使用, 不允许修改 > }*PEX_IMAGELOCK, * LPEX_IMAGELOCK; >
> ###EWINDOW_MDICHILD
> 数据类型原型
> > // MDIClient 窗口句柄结构 > struct EWINDOW_MDICHILD > { > HWND hMDIClient1; // MDI下的第一层窗口 > HWND hMDIClient2; // MDI下的第二层窗口 > HWND hMDIClient3; // MDI下的第三层窗口, 可以根据这个窗口判断是否为起始页或者设计器窗口或者代码区 > HWND hMDIClient4; // MDI下的第四层窗口, 如果是代码区, 这个窗口就是代码窗口 > HWND hVScroll; // 纵向滚动条 > HWND hHScroll; // 横向滚动条 > }; >
> ###BEGIN_END_PAINT_STRUCT
> 数据类型原型
> > // 各个组件开始和结束绘画使用的结构 > struct BEGIN_END_PAINT_STRUCT : PAINTSTRUCT > { > RECT rc; // 组件客户区矩形 > int cxClient; // 客户区宽度 > int cyClient; // 客户区高度 > LPVOID pFont; // 内部使用, 不允许修改 > LPVOID hFont; // 内部使用, 不允许修改 > LPVOID md; // 内部使用, 不允许修改 > BOOL isDxRender; // 内部使用, 不允许修改 > LPOBJSTRUCT pData; // 窗口数据 > }; >
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;