• 大小: 42KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-20
  • 语言: 其他
  • 标签: minigui  时钟  

资源简介

这是用minigui编写的电子时钟程序,界面相对简单,只是实现了最简单的功能

资源截图

代码片段和文件信息


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define YUAN 3.1415926
#define _ID_TIME_STATIC 100
#define _ID_TIMER 101

static struct clock
{
int hour;
int min;
int sec;
}tclock;
static char* mk_time (char* buff)
{
time_t t;
struct tm * tm;
time (&t);
tm = localtime (&t);
tclock.hour=tm->tm_hour;
tclock.min=tm->tm_min;
tclock.sec=tm->tm_sec;
sprintf (buff “%02d:%02d:%02d“ tm->tm_hour tm->tm_min tm->tm_sec);
return buff;
}

static void number(HDC hdc)
{
int i;
for(i=1;i<13;i++)
{
if(i==3)
{
TextOut (hdc 196 162 “3“);
}

else
if(i==6)
{
TextOut (hdc 136 222 “6“);
}
else
if(i==9)
{
TextOut (hdc 77 163 “9“);
}
else
if(i==12)
{
TextOut (hdc 133 104“12“);
}
else
{
TextOut (hdc 140+60*sin(YUAN*30*i/180)-3 170-60*cos(YUAN*30*i/180)-12“.“);
}

}
}

static void line(HDC hdc)
{
int hour2=5*tclock.hour;
if(hour2>=60)
{
MoveTo(hdc140170);
LineTo(hdc140+40*sin(YUAN*6*(hour2-60)/180)170-40*cos(YUAN*6*(hour2-60)/180));
}
else
{
MoveTo(hdc140170);
LineTo(hdc140+40*sin(YUAN*6*hour2/180)170-40*cos(YUAN*6*hour2/180));
}

MoveTo(hdc140170);
LineTo(hdc140+50*sin(YUAN*6*tclock.min/180)170-50*cos(YUAN*6*tclock.min/180));
SetPenColor(hdcPIXEL_red);
MoveTo(hdc140170);
LineTo(hdc140+60*sin(YUAN*6*tclock.sec/180)170-60*cos(YUAN*6*tclock.sec/180));

}

static int HelloWinProc(HWND hWnd int message WPARAM wParam LPARAM lParam)
{
HDC hdc;

char buff [20];
// static char msg_text[30];
switch (message)
{
//创建时发送的消息,用来做初始化处理,这里是初始化字符串内容
case MSG_CREATE:
// strcpy(msg_text“定时器“);
CreateWindow (CTRL_STATIC mk_time (buff)
WS_CHILD | WS_BORDER | WS_VISIBLE | SS_CENTER
_ID_TIME_STATIC
50 20 200 25
hWnd 0);
/* 创建一个间隔为 1 秒的定时器,其标识号为 _ID_TIMER,接收定时器消息的窗口为 hWnd */
SetTimer (hWnd _ID_TIMER 100);
break;

case MSG_TIMER:
/* 接收到定时器消息。
* 严格的程序还应该在这里判断 wParam 是否等于期望的定时器标识符,这里是 _ID_TIMER。
*/
switch (wParam)
{
case _ID_TIMER:
InvalidateRect(hWnd NULL TRUE);
SetDlgItemText (hWnd _ID_TIME_STATIC mk_time (buff));
break;
}
break;
case MSG_PAINT:
hdc = BeginPaint (hWnd);
Circle(hdc14017073);
number(hdc);
line(hdc);
EndPaint (hWnd hdc);
break;
//结束时一些处理函数,主要是销毁主窗口和发送quit消息以退出消息循环。
case MSG_CLOSE:
/* 删除定时器 */
KillTimer (hWnd _ID_TIMER);
DestroyMainWindow (hWnd);
PostQuitMessage (hWnd);
return 0;
}

return DefaultMainWinProc(hWnd message wParam lParam);
}

int MiniGUIMain (int argc const char* argv[])
{
MSG Msg;
HWND hMainWnd;
MAINWINCREATE CreateInfo;

//窗

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2010-12-24 13:28  clock\
     文件       32998  2010-12-23 20:51  clock\.cproject
     文件        2173  2010-12-23 20:50  clock\.project
     目录           0  2010-12-24 14:26  clock\Debug\
     文件       61397  2010-12-24 14:26  clock\Debug\clock.exe
     目录           0  2010-12-24 14:26  clock\Debug\src\
     文件       40996  2010-12-24 14:26  clock\Debug\src\clock.o
     文件       15310  2010-12-23 20:52  clock\MiniGUI.cfg
     目录           0  2010-12-23 20:51  clock\src\
     文件        4234  2010-12-24 14:26  clock\src\clock.c

评论

共有 条评论