Space C 控件升级发布 & 规范声明 [控件发布:SPWAV 1.0]
我知道有不有朋友真用SPACEC在做控件。经过考虑我想暂时发布一个控件设计的规范声明,好解决大家的控件可以互相复用。升级发布:
按钮控件 1.1:[attach]33053[/attach]
时钟控件 1.1:[attach]33054[/attach]
菜单控件 1.1:[attach]33055[/attach]
滚动条控件 1.1:[attach]33056[/attach]
列表框控件 1.0:[attach]33079[/attach] - 2008.3.18
新升级:更改各事件接口,传入对应的控件地址
按钮控件 1.2:[attach]33133[/attach] - 2008.3.20
时钟控件 1.2:[attach]33134[/attach] - 2008.3.20
菜单控件 1.2:[attach]33135[/attach] - 2008.3.20
新控件发布:对按钮和列表框的复用是亮点,控件本身代码实现很少。
ComboBox 1.0:[attach]33152[/attach] - 2008.3.21
控件升级:修正滚动条控件中的Change事件接口参数形式
滚动条控件 1.2:[attach]33328[/attach]
控件发布:支持8位WAV音频文件播放,支持暂停,继续,控制播放进度等功能。Space C 1.1.0.0 及以上版本支持。
音频控件1.0:[attach]33344[/attach] - 2008.3.27
其更改如下,只是加入了宏预编译,如时钟控件:
SPTIMER.h
[color=Red]#ifndef SP_TIMER_DEFINE_STRUCT
#define SP_TIMER_DEFINE_STRUCT[/color]
typedef void (*SPTimer_Timer)(void *);
typedef struct
{
UINT8 *Name; /* 时钟名称 */
UINT8 Enable; /* 时钟是否可操作 */
UINT32 TimeCount; /* 用于记数 */
UINT32 Interval; /* 多少次循环进行一次 */
UINT8 Mode; /* 是否为软时钟 */
SPTimer_Timer Timer; /* Timer事件函数指针 */
} SPTIMER;
void SP_CreatTimer(SPTIMER *Timer,
UINT8 *Name,
INT16 Top,
INT16 Left,
UINT16 Width,
UINT16 Height,
UINT8 Enable,
UINT32 Interval,
UINT8 Mode); /* 创建时钟模块 */
INT16 SP_UseTimer(SPTIMER *Timer,
UINT16 TabOrder,
UINT16 Keyboard); /* 时钟使用函数 */
[color=Red]#endif[/color]
SPTIMER.c
[color=Red]#ifndef SP_TIMER_DEFINE_FUN
#define SP_TIMER_DEFINE_FUN[/color]
/****************************************************************************
* 函数名: SP_CreatTimer *
* 功能 : 创建时钟控件 *
* 参数 : TimerS 时钟控件 *
* Name 开辟时钟控件名字 *
* Enable 是否可用 *
* Interval 响应间隔 *
* 返回值: 无 *
* 说明 : 无 *
****************************************************************************/
void SP_CreatTimer(SPTIMER *Timer,
UINT8 *Name,
INT16 Top,
INT16 Left,
UINT16 Width,
UINT16 Height,
UINT8 Enable,
UINT32 Interval,
UINT8 Mode)
{
/*sprintf(Timer->Name, "%s", Name); 记录时钟控件名字 */
Timer->Name = Name;
Timer->Enable = Enable; /* 记录时钟控件是否可用 */
Timer->Interval = Interval; /* 记录时钟控件响应间隔 */
Timer->TimeCount = 0; /* 记数清0 */
Timer->Mode = Mode; /* 是否为软时钟 */
Timer->Timer = NULL;
}
/****************************************************************************
* 函数名: SP_UseTimer *
* 功能 : 时钟控件使用函数 *
* 参数 : TimerS 时钟控件 *
* TabOrder Tab顺序 *
* Keyboard 键盘响应值 *
* 返回值: -1,表示无键盘响应 *
* 说明 : 无 *
****************************************************************************/
INT16 SP_UseTimer(SPTIMER *Timer,
UINT16 TabOrder,
UINT16 Keyboard)
{
if (Timer->Mode) /* 软时钟 */
{
Timer->TimeCount++;
if (Timer->TimeCount >= Timer->Interval) /* 间隔到,响应时钟 */
{
Timer->TimeCount = 0;
if (Timer->Enable) /* 若时钟开启 */
{
if (Timer->Timer != NULL)
{
Timer->Timer(Timer);
}
}
}
}
else /* 硬时钟 */
{
/* SP_TimerCount 鼠标模块的记数变量 */
if (SP_TimerCount >= Timer->TimeCount) /* 说明SP_TimerCount没有溢出 */
{
if ((SP_TimerCount-Timer->TimeCount) >= Timer->Interval)
{
Timer->TimeCount = SP_TimerCount;
if (Timer->Enable) /* 若时钟开启 */
{
if (Timer->Timer != NULL)
{
Timer->Timer(Timer);
}
}
}
}
else /* 说明SP_TimerCount溢出 */
{
if ((4294967296L-SP_TimerCount+Timer->TimeCount) >= Timer->Interval)
{
Timer->TimeCount = SP_TimerCount;
if (Timer->Enable) /* 若时钟开启 */
{
if (Timer->Timer != NULL)
{
Timer->Timer(Timer);
}
}
}
}
}
return -1;
}
[color=Red]#endif[/color]
注意一下红字部分,以后的控件应该加上这样的预编译宏。
[color=Red]补充:建议在建立事件函数时,将对应的控件结构以 void * 形式进行传递。以被扩展使用。[/color]
[[it] 本帖最后由 jig 于 2008-3-27 02:17 编辑 [/it]]
顶起~~ JIG辛苦了,我顶! 新控件 ComboBox 1.0 发布。
自顶~~~~~~
哈哈哈哈,现在是纯粹的自娱自乐啦! 不错,来帮顶一下,我在教育网,访问01O1部落空间实在有够慢,正在联系换空间的事,等空间换了立马给你上传到网站上去。继续~~ 做了个小升级 -- SPSLBAR 1.2
主要修正了滚动条控件的Change事件的接口参数形式。
接下来,会有个比较大的动作。Space c 1.1.0.0 将推出。
主要扩充了音频支持部分,完全支持WAV格式的8位音频文件播放哦。当然是支持任意长的音频文件的。
本来是想将音频播放直接做成控件的形式提供,结果出现架够上的问题。其实主要是DOS下的中断问题。没办法,只能将这个功能整合到系统中,让系统给予支持。
不过,在实现中,觉得这样做是有必要的。目前任何平台,任何形式的开发包,音频功能都是以系统级形式提供的。
也就是说Space C默认的DOS版下的开发包将扩容。当然,接口全留好了,以后若换WIN下的开发包想必也不会是很难的事。
晚上赶工,哈哈哈。 嘿嘿,赶工完成,妈妈哟。2:30拉,明天还要上班 JIG,你要注意身体喔!
页:
[1]
