[原创]Space C 控件发布 - 列表框控件
列表框控件 作者:孙靖 版本号:V1.0说明:对滚动条控件进行复用。采用预编译宏命令避免滚动条控件重复定义。
最值得一提是事件函数统一给出目的控件指针,以实现当多个控件捆绑使可以
双向控制。
具体做法:如下事件函数形式 typedef (*SPLIST_Click)(void *, UINT16, UINT16, UINT16);
有兴趣的朋友可以参考代SPLIST.c里的
void SP_ListHScrollBarOChange(void *ScrollBar, UINT16 Index) 和
void SP_ListVScrollBarOChange(void *ScrollBar, UINT16 Index)
事件方式:函数指针
相关函数:
void SP_ScareteList(SPLIST *List); /* 隐藏列表框 */
void SP_RevealList(SPLIST *List); /* 重显列表框 */
数据结构如下:
typedef (*SPLIST_Click)(void *, UINT16, UINT16, UINT16);
typedef struct
{
UINT8 *Name; /* 列表名称 */
UINT16 Enable:1; /* 列表是否可操作 */
UINT16 Visible:1; /* 列表是否可见 */
INT16 Left; /* 列表在屏幕的坐标 */
INT16 Top;
UINT16 Width; /* 列表的宽高 */
UINT16 Height;
UINT16 Index; /* 目前选中项目的顺序 */
UINT16 ItemIndex; /* 标记当前以第几项为开始最顶端项 */
UINT16 LeftPex; /* 文字偏移量 */
SPCOLOR Color1; /* 菜单边框和中间的颜色 */
SPCOLOR Color2;
SPCOLOR Color3;
UINT16 HScrollBar:1; /* 是否有纵向和横向滚动条 */
UINT16 VScrollBar:1;
SPSLBAR HScrollBarO; /* 纵向滚动条 */
SPSLBAR VScrollBarO; /* 横向滚动条 */
UINT16 ReshHVBar:1; /* 是否刷新滚动条 */
UINT16 ItemCount; /* 记录条目项总数 */
UINT8 *Caption; /* 菜单名称 */
SPLIST_Click Click; /* 点击事件函数指针 */
} SPLIST;
效果图:
列表框控件下载:
SPLIST.rar
(7.61 KB)
实例代码(SpaceC工程):
try.rar
(150.28 KB)
[[it] 本帖最后由 jig 于 2008-3-19 09:11 编辑 [/it]]