📄 clock.c
字号:
if (oldhour != timeParamPtr->hour)
{
DrawText(hGC, GetASIIStr(oldhour), 35,160,150,220, \
HZK_16X16_FONT, GPC_BLACK, GPC_XOR_STYLE);
DrawText(hGC, GetASIIStr(timeParamPtr->hour), 35,160,150,220, \
HZK_16X16_FONT, GPC_BLACK, GPC_REPLACE_STYLE);
}
if (oldmin != timeParamPtr->minute)
{
DrawText(hGC, GetASIIStr(oldmin), 65,160,150,220, \
HZK_16X16_FONT, GPC_BLACK, GPC_XOR_STYLE);
DrawText(hGC, GetASIIStr(timeParamPtr->minute), 65,160,150,220, \
HZK_16X16_FONT, GPC_BLACK, GPC_REPLACE_STYLE);
}
if (oldsec != timeParamPtr->second)
{
DrawText(hGC,GetASIIStr(oldsec) , 94,160,150,220, \
HZK_16X16_FONT, GPC_BLACK,GPC_XOR_STYLE);
DrawText(hGC,GetASIIStr(timeParamPtr->second) ,94,160,150,220, \
HZK_16X16_FONT, GPC_BLACK,GPC_REPLACE_STYLE);
// oldsec = timeParamPtr ->second;
}
oldhour = timeParamPtr->hour;
oldsec = timeParamPtr ->second;
oldmin = timeParamPtr->minute;
}
void SearchTimeSet(U32 hGC)
{
U32 mainwin,bt1,bt2,bt3,bt4,bt5,bt6,bt7,bt8,bt9;
U32 pGC = hGC;
MSG msg;
U8 quit = 0;
U8 tmp =0;
ASIX_TIME TmpTime = {0,0,0},changetime={23,59,40};
TmpTime = TimeParam;
mainwin = CreateWindow( WNDCLASS_WIN, //窗口类型(主窗口)
"时间设置", //窗口标题
WS_OVERLAPPEDWINDOW, //窗口风格(主窗口风格的宏定义参见头文件asixwin.h)
0,0, //窗口左上角在逻辑屏幕中的坐标
PHY_LCD_W,PHY_LCD_H, //窗口的宽度和高度
0, //窗口的父窗口(主窗口没有父窗口)
0, //窗口的附加参数(主窗口没有附加参数)
NULL); //窗口的附加数据(主窗口没有附加数据)
bt1 = CreateWindow( WNDCLASS_BUTTON,
"确定",
WS_CHILD | BS_REGULAR,
11,215,
42,20,
mainwin,
0,
NULL);
bt2 = CreateWindow( WNDCLASS_BUTTON,
"取消",
WS_CHILD | BS_REGULAR,
56,215,
42,20,
mainwin,
0,
NULL);
bt3 = CreateWindow( WNDCLASS_BUTTON,
"修改",
WS_CHILD | BS_REGULAR,
106,215,
42,20,
mainwin,
0,
NULL);
bt4 = CreateWindow( WNDCLASS_BUTTON,
"sec +",
WS_CHILD | BS_REGULAR,
11,175,
42,20,
mainwin,
0,
NULL);
bt5 = CreateWindow( WNDCLASS_BUTTON,
"sec -",
WS_CHILD | BS_REGULAR,
11,195,
42,20,
mainwin,
0,
NULL);
bt6 = CreateWindow( WNDCLASS_BUTTON,
"min+",
WS_CHILD | BS_REGULAR,
56,175,
42,20,
mainwin,
0,
NULL);
bt7 = CreateWindow( WNDCLASS_BUTTON,
"min-",
WS_CHILD | BS_REGULAR,
56,195,
42,20,
mainwin,
0,
NULL);
bt8 = CreateWindow( WNDCLASS_BUTTON,
"hour+",
WS_CHILD | BS_REGULAR,
106,175,
42,20,
mainwin,
0,
NULL);
bt9 = CreateWindow( WNDCLASS_BUTTON,
"hour-",
WS_CHILD | BS_REGULAR,
106,195,
42,20,
mainwin,
0,
NULL);
// hGC = GetGC();
// KVMStarter();
firstprint = 0;
TimePrint1(pGC);
// 消息处理
while(!quit)
{
ASIXGetMessage(&msg, NULL, 0, 0);
switch(msg.message)
{
// 在此用户加入自己的消息处理
case WM_COMMAND:
if (msg.lparam == bt1)
{
quit = 1;
}else
if (msg.lparam == bt2)
{
TimeParam = TmpTime;
quit =1;
}else
if (msg.lparam == bt3)
{
TimeParam = changetime;
// firstprint = 0;
TimePrint1(pGC);
}else
if (msg.lparam == bt4)
{
tmp = TimeParam.second;
if (tmp == 59)
tmp = 0;
else tmp ++;
TimeParam.second = tmp;
TimePrint1(pGC);
}else
if (msg.lparam == bt5)
{ tmp = TimeParam.second;
if (tmp == 0)
tmp = 60;
tmp --;
TimeParam.second = tmp;
// firstprint = 0;
TimePrint1(pGC);
}else
if (msg.lparam == bt6)
{
tmp = TimeParam.minute;
if (tmp == 59)
tmp = 0;
else tmp ++;
TimeParam.minute = tmp;
// firstprint = 0;
TimePrint1(pGC);
}else
if (msg.lparam == bt7)
{
tmp = TimeParam.minute;
if (tmp == 0)
tmp = 60;
tmp --;
TimeParam.minute = tmp;
TimePrint1(pGC);
}else
if (msg.lparam == bt8)
{
tmp = TimeParam.hour;
if (tmp == 23)
tmp = 0;
else tmp ++;
TimeParam.hour = tmp;
TimePrint1(pGC);
}else
if (msg.lparam == bt9)
{
tmp = TimeParam.hour;
if (tmp == 0)
tmp = 24;
tmp --;
TimeParam.hour= tmp;
TimePrint1(pGC);
}
break;
// 关闭窗口的消息,建议用户不要更改该消息的处理
case WM_QUIT:
TimeParam = TmpTime;
quit = 1;
break;
}
DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam);
}
DestroyWindow( mainwin );
firstprint = 0;
// EndofTask();
}
void TimeProcess(void)
{
MSG msg;
U32 mainwin;
//U32 vscroll;
U32 hGC;
U8 quit=0;
U32 timerSecond1;
U32 bt2,bt3;
// char tmpchar ;
// U8 *ptrchar;
U8 * string1 = "This is CLOCK design";
/* 创建主窗口 */
mainwin = CreateWindow( WNDCLASS_WIN, //窗口类型(主窗口)
"时钟设计", //窗口标题
WS_OVERLAPPEDWINDOW, //窗口风格(主窗口风格的宏定义参见头文件asixwin.h)
0,0, //窗口左上角在逻辑屏幕中的坐标
PHY_LCD_W,PHY_LCD_H, //窗口的宽度和高度
0, //窗口的父窗口(主窗口没有父窗口)
0, //窗口的附加参数(主窗口没有附加参数)
NULL); //窗口的附加数据(主窗口没有附加数据)
/*
bt1 = CreateWindow( WNDCLASS_BUTTON,
"下个菜单",
WS_CHILD | BS_REGULAR,
20,30,
52,20,
mainwin,
0,
NULL);
*/
bt2 = CreateWindow( WNDCLASS_BUTTON,
"退出",
WS_CHILD | BS_REGULAR,
100,200,
32,20,
mainwin,
0,
NULL);
bt3 = CreateWindow( WNDCLASS_BUTTON,
"时间设置",
WS_CHILD | BS_REGULAR,
25,200,
50,20,
mainwin,
0,
NULL);
/* 用户可以在此绘图,但该图形不会被保存 */
hGC = GetGC();
// KVMStarter();
//CreateTimer( &timerSecond1, 805, NULL, NULL, CYC_MODE|AUTO_START_MODE );
CreateTimer( &timerSecond1, 805, NULL, NULL, CYC_MODE|AUTO_START_MODE );
StartTimer( timerSecond1 );
// DrawText(hGC, string1, 20,190,150,220, \
// HZK_16X16_FONT, GPC_BLACK, GPC_REPLACE_STYLE);
// DrawText(hGC, ptr1, 40,90,150,190, \
// HZK_16X16_FONT, GPC_BLACK, GPC_REPLACE_STYLE);
TimePrint(hGC);
// 消息处理
while(!quit)
{
ASIXGetMessage(&msg, NULL, 0, 0);
switch(msg.message)
{
// 在此用户加入自己的消息处理
case WM_COMMAND:
if (msg.lparam == bt2)
{
quit = 1;
firstprint = 0;
}
if (msg.lparam == bt3)
{
SearchTimeSet(hGC);
}
break;
case WM_TIMER:
TimeParam.second ++;
// CHANGETIME = 1;
TimePrint(hGC);
// quit =1;
break;
// 关闭窗口的消息,建议用户不要更改该消息的处理
case WM_QUIT:
quit = 1;
firstprint = 0;
break;
}
DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam);
}
TimeParam.second = 0;
TimeParam.minute = 0;
TimeParam.hour = 0;
StopTimer( timerSecond1 );
FreeTimer( timerSecond1);
DestroyWindow( mainwin );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -