标题:Space C 控件升级发布 & 规范声明 [控件发布:SPWAV 1.0]
只看楼主
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
结帖率:100%
 问题点数:0 回复次数:11 
Space C 控件升级发布 & 规范声明 [控件发布:SPWAV 1.0]
我知道有不有朋友真用SPACEC在做控件。经过考虑我想暂时发布一个控件设计的规范声明,好解决大家的控件可以互相复用。

升级发布:
按钮控件 1.1:
SPBUTTON 1.1.rar (4.81 KB)

时钟控件 1.1:
SPTIMER 1.1.rar (3.89 KB)

菜单控件 1.1:
SPMENU 1.1.rar (3.62 KB)

滚动条控件 1.1:
SPSLBAR 1.1.rar (5.47 KB)


列表框控件 1.0:
SPLIST 1.0.rar (7.63 KB)
  - 2008.3.18

新升级:更改各事件接口,传入对应的控件地址
按钮控件 1.2:
SPBUTTON 1.2.rar (4.86 KB)
- 2008.3.20
时钟控件 1.2:
SPTIMER 1.2.rar (3.92 KB)
- 2008.3.20
菜单控件 1.2:
SPMENU 1.2.rar (3.65 KB)
- 2008.3.20

新控件发布:对按钮和列表框的复用是亮点,控件本身代码实现很少。
ComboBox 1.0:
SPCOMBOX 1.0.rar (9.96 KB)
- 2008.3.21

控件升级:修正滚动条控件中的Change事件接口参数形式
滚动条控件 1.2:
SPSLBAR 1.2.rar (5.52 KB)



控件发布:支持8位WAV音频文件播放,支持暂停,继续,控制播放进度等功能。Space C 1.1.0.0 及以上版本支持。
音频控件1.0:
SPWAV 1.0.rar (2.83 KB)
- 2008.3.27




其更改如下,只是加入了宏预编译,如时钟控件:
SPTIMER.h
#ifndef SP_TIMER_DEFINE_STRUCT

#define SP_TIMER_DEFINE_STRUCT

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);      /* 时钟使用函数                     */
                  
#endif


SPTIMER.c
#ifndef SP_TIMER_DEFINE_FUN

#define SP_TIMER_DEFINE_FUN


/****************************************************************************
 *  函数名: 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;
}

#endif

注意一下红字部分,以后的控件应该加上这样的预编译宏。


补充:建议在建立事件函数时,将对应的控件结构以 void * 形式进行传递。以被扩展使用。

[[it] 本帖最后由 jig 于 2008-3-27 02:17 编辑 [/it]]
搜索更多相关主题的帖子: 控件 Space SPWAV 声明 
2008-03-18 10:09
ba_wang_mao
Rank: 2
来 自:成都理工大学
等 级:论坛游民
帖 子:297
专家分:27
注 册:2006-11-7
得分:0 
我先占个位子

多年以来还在MSDOS、单片机下搞嵌入式编程,对WINDOWS编程一窍不通,很想了解WINDOWS下病毒编程技术。
2008-03-19 08:39
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
得分:0 
又做了新控件,干脆,我会一直将新发布的控件集中发布在这个帖子上。这样也免的大家再自己去找。

个人网站 -  http://.h001.
2008-03-19 09:15
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
得分:0 
新升级:按钮控件 1.2、时钟控件 1.2、菜单控件 1.2

顶起~~

个人网站 -  http://.h001.
2008-03-20 17:46
ba_wang_mao
Rank: 2
来 自:成都理工大学
等 级:论坛游民
帖 子:297
专家分:27
注 册:2006-11-7
得分:0 
JIG辛苦了,我顶!

多年以来还在MSDOS、单片机下搞嵌入式编程,对WINDOWS编程一窍不通,很想了解WINDOWS下病毒编程技术。
2008-03-21 11:03
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
得分:0 
新控件 ComboBox 1.0 发布。

自顶~~~~~~


哈哈哈哈,现在是纯粹的自娱自乐啦!

个人网站 -  http://.h001.
2008-03-21 15:19
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
得分:0 
不错,来帮顶一下,我在教育网,访问01O1部落空间实在有够慢,正在联系换空间的事,等空间换了立马给你上传到网站上去。继续~~
2008-03-21 20:16
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
得分:0 
做了个小升级 -- SPSLBAR 1.2
主要修正了滚动条控件的Change事件的接口参数形式。

接下来,会有个比较大的动作。Space c 1.1.0.0 将推出。
主要扩充了音频支持部分,完全支持WAV格式的8位音频文件播放哦。当然是支持任意长的音频文件的。

本来是想将音频播放直接做成控件的形式提供,结果出现架够上的问题。其实主要是DOS下的中断问题。没办法,只能将这个功能整合到系统中,让系统给予支持。

不过,在实现中,觉得这样做是有必要的。目前任何平台,任何形式的开发包,音频功能都是以系统级形式提供的。

也就是说Space C默认的DOS版下的开发包将扩容。当然,接口全留好了,以后若换WIN下的开发包想必也不会是很难的事。

晚上赶工,哈哈哈。

个人网站 -  http://.h001.
2008-03-26 22:55
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
得分:0 
嘿嘿,赶工完成,妈妈哟。2:30拉,明天还要上班

个人网站 -  http://.h001.
2008-03-27 02:25
ba_wang_mao
Rank: 2
来 自:成都理工大学
等 级:论坛游民
帖 子:297
专家分:27
注 册:2006-11-7
得分:0 
JIG,你要注意身体喔!

多年以来还在MSDOS、单片机下搞嵌入式编程,对WINDOWS编程一窍不通,很想了解WINDOWS下病毒编程技术。
2008-03-28 08:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-203942-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026501 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved