资源简介
这是用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
- 上一篇:可以进行图片的电话号码识别
- 下一篇:51单片机迷宫小车
相关资源
- 用DS1302与LCD12864设计的可调电子钟及仿
- 51单片LCD1602时钟程序
- STM32读写时钟PCF8563
- VerilogHDL在FPGA中实现的数字时钟
- 汇编课程设计——时钟加小闹钟
- 微机原理课程设计——电子时钟
- STM32的RTC实时时钟程序,亲测能用
- labview 时钟
- 电子万年历毕业设计基于AT89C51单片机
- 单片机课程设计数字时钟
- pcf8583数字时钟程序清单.
- Proteus 时钟显示仿真
- 数字时钟数字时钟课程设计
- STM32-实时时钟和闹钟程序.pdf
- 创意炫酷圆盘时钟
- 基于Proteus的数字时钟设计与仿真
- 汇编语言课设 设计时钟 实现整点报时
- 单片机多功能数字时钟报告1602LCD Ds
- 基于msp430实现电子时钟程序
- STC15系列读DS18B20程序,12Mhz时钟晶振
- 桌面可以一直置顶的小时钟
- IEEE 1588(PTPv2)精确时钟同步协议抓包
- 微机课程设计电子表
- 数字逻辑数字时钟原理图
-
Actionsc
ript3.0制作的一个时钟 - 时钟芯片ds1338应用 word文件
- 硬件电子时钟的设计微机原理
- 基于atmega16单片机的时钟
- 电子时钟汇编代码
- 基于cyclone II驱动LCD1602的电子时钟设计
评论
共有 条评论