📄 timecall.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 + -