⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timecall.c

📁 这是一个支持"微型嵌入式 GUI" 的 SDK For Linux 版,其 GUI 核心可于 Linux, DOS 16/32 Bit, uC/OS-II及Windows 等平台工作,支持常用
💻 C
字号:
/*
TimeCall  - 定时器
www.ecub2006.com
*/
#include "gui.h" /* GUI 的头文件 */


void MyWin(HAND hd,MESSAGE msg) /* 窗口的消息处理函数 */
{
HAND button;/* 句柄 */
HAND speedbar;/* 句柄 */
if(msg.type == GM_SYSTEM)/* 判断消息类型,消息类型全部为大写  */
	switch(msg.message)/* 判断消息 */
	{
	case GM_Create:/* 对象被创建后产生该消息,一般情况下,收到该消息时,
                对象还没有显示。可以在这里进行一些初始化工作。
				如果是窗口的GM_Create消息,可以创建新的对象,如 BUTTON 等 */
		        {
				speedbar=CreateObject(hd,SPEEDBAR,1,1,"",60,100,280,120,0,0);
		        efSpeedBar->SetN(speedbar,200);/* 设置进度条项目数 */
                SetObjVar(hd,speedbar);/* 将进 度条对象的句柄 设置为窗口的自定义数据*/
				efTimeCall->Add(hd,1,MyWin,0,0,10);/* 添加一个定时器 */
				/*
				int16 (*Add)(
                HAND hd, -对象的句柄 
                int16 id, - 定时器的 ID
                void  (*Server)(), -消息接收函数
                uint8   isclass, -接收函数是否为对象类的
				
				注意:对象类的消息处理函数,如 void NEW_CLASS(MESSAGE msg); 
				对象的消息处理函数,如 void MyWin(HAND hd,MESSGE msg); 
				两者之间函数参数不同。
				
				uint8   isontime, - 暂时无效参数
                uint32  waittime); - 时间间隔,100为1秒 

                int16 (*Del)(HAND hd,int16 id); - 删除定时器。参数:对象句柄,定时器ID
                int16 (*Start)(HAND hd,int16 id); -启动一个定时器。参数:对象句柄,定时器ID
                int16 (*Stop)(HAND hd,int16 id);- 暂停一个定时器。参数:对象句柄,定时器ID
				*/

                efTimeCall->Start(hd,1); /* 启动定时器 */
				SetObjVar(speedbar,(HAND)0);/* 临时数值保存在 进度条的自定义数据 */
                 /* 创建按钮 */
                CreateObject(hd,BUTTON,2,1,"Start",60,130,115,150,0,0);
                CreateObject(hd,BUTTON,3,1,"Stop",125,130,180,150,0,0);			
                } 
				return;
	case GM_Destroy:
        efTimeCall->Del(hd,1);/* 删除定时器 */
		return;
	default:return;
}

if(msg.type == GM_TIMECALL)
	switch(msg.message)
	{
	case 1:
		{
		int i;
		speedbar=GetObjVar(hd);
		i=(int)GetObjVar(speedbar);
		efSpeedBar->SetValue(speedbar,i);
        i+=5;
		if(i>200) i=0;
		SetObjVar(speedbar,(HAND)i);
	    }
		return;
	default:
		return;
	}
if(msg.type == GM_COMMAND)
	switch(msg.message)
	{
	case 2:efTimeCall->Start(hd,1);
		return;
	case 3:efTimeCall->Stop(hd,1);
		return;
	default:
		return;
	}
}

int gmain(void *data)
{
	/* 创建窗口 */
	CreateObject(0,MAINWINDOW,1,1,"TimeCall",10,10,630,300,MyWin,0);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -