📄 mwtest.c
字号:
#define rTICINT (*(volatile unsigned char *)0x1d7008e)
#else
#define rRTCCON (*(volatile unsigned char *)0x1d70040)
#define rRTCALM (*(volatile unsigned char *)0x1d70050)
#define rALMSEC (*(volatile unsigned char *)0x1d70054)
#define rALMMIN (*(volatile unsigned char *)0x1d70058)
#define rALMHOUR (*(volatile unsigned char *)0x1d7005c)
#define rALMDAY (*(volatile unsigned char *)0x1d70060)
#define rALMMON (*(volatile unsigned char *)0x1d70064)
#define rALMYEAR (*(volatile unsigned char *)0x1d70068)
#define rRTCRST (*(volatile unsigned char *)0x1d7006c)
#define rBCDSEC (*(volatile unsigned char *)0x1d70070)
#define rBCDMIN (*(volatile unsigned char *)0x1d70074)
#define rBCDHOUR (*(volatile unsigned char *)0x1d70078)
#define rBCDDAY (*(volatile unsigned char *)0x1d7007c)
#define rBCDDATE (*(volatile unsigned char *)0x1d70080)
#define rBCDMON (*(volatile unsigned char *)0x1d70084)
#define rBCDYEAR (*(volatile unsigned char *)0x1d70088)
#define rTICINT (*(volatile unsigned char *)0x1d7008c)
#endif
static GR_WINDOW_ID w; //声明根窗口static GR_GC_ID gc; //声明根窗口绘图上下文static GR_GC_ID gLamp; //声明灯的绘图上下文
static GR_GC_ID gid; //声明按钮的绘图上下文
static GR_GC_ID t; //声明欢迎词绘图上下文
GR_EVENT event; //声明事件
GR_WINDOW_ID btRed; //声明按钮窗口(红),它实际是一个窗口,我们把它作为按钮
GR_WINDOW_ID btGreen;
GR_WINDOW_ID btBlue;
GR_WINDOW_ID btLamp; //声明灯窗口,在该窗口上画出灯。
GR_FONT_ID font; //设置字体号
void draw_main_win(GR_WINDOW_ID w,GR_GC_ID gc);
void draw_Error_win(char *arg[]);
void do_btdown(GR_EVENT_BUTTON *event);
/******************************************************************************/
int main(int ac,char **av)
{
if (GrOpen()<0)
{
printf("Can't open graphics\n");
exit(1);
}
//w=GrNewWindow(GR_ROOT_WINDOW_ID,10,10,300,200,3,GREEN,BLUE);
// 实例化根窗口
gc=GrNewGC();// 实例化上下文
// GrMapWindow(w);
// 显示窗口
draw_main_win(w,gc);
//for(;;){GrGetNextEvent(&event);}
GrClose();
return 0;
}
/*****************************************************************************/
void draw_main_win(GR_WINDOW_ID w,GR_GC_ID gc)
{
//draw main window
GR_WINDOW_ID wButton;
char szText[30];
char szTimer[10];
int nYear=0;
int nMonth=0;
int nDay=0;
int nHours=0;
int nMinutes=0;
int nSeconds=0;
static GR_GC_ID DCTimer;
GR_FONT_ID ChineseFont;
w = GrNewWindowEx(
GR_WM_PROPS_MAXIMIZE, "Demo", GR_ROOT_WINDOW_ID,
10, 10, 200, 140, GrGetSysColor(GR_COLOR_WINDOW));
//wButton = GrNewWindow(w,70,100,10,10,3,GREEN,BLUE);
GrSelectEvents(w, GR_EVENT_MASK_ALL);
//GrSelectEvents(wButton, GR_EVENT_MASK_BUTTON_DOWN);
//w=GrNewWindow(GR_ROOT_WINDOW_ID,0,0,200,140,3,GREEN,BLUE);// 实例化根窗口
//gc=GrNewGC();// 实例化上下文
GrMapWindow(w);// 显示窗口
//GrMapWindow(wButton);
//GR_GC_ID gid;
/*编译为Native 版时变量可在函数内设,但交叉编译时要在程序声明段设*/
//btLamp=GrNewWindow(w,125,25,50,50,0,GREEN,0);//绘出灯窗口。
//btRed=GrNewWindow(w,55,150,50,20,1,WHITE,BLUE);// 绘出红按钮窗口。
/*参数说明:
w:要在其上画图的窗口,这里指根窗口(注:根窗口有其默认的
GR_ROOT_WINDOW_ID) 窗口的左上角坐标:(70,30) 窗口宽500 ,高400, 边宽为3 背景色为绿,边色为蓝
*/
/*在这里画出绿,蓝按钮窗口*/
//GrMapWindow(btLamp);//显示出灯子窗口
//GrMapWindow(btRed);
//GrMapWindow(btGreen);
//GrMapWindow(btBlue);
//画灯
//gLamp=GrNewGC();
//GrSetGCForeground(gLamp,GRAY);
//GrSetGCBackground(gLamp,GREEN);
//GrFillEllipse(btLamp,gLamp,25,25,25,25);
//画红按钮
//gid=GrNewGC();
//GrSetGCForeground(gid,RED);
//GrSetGCBackground(gid,WHITE);
//GrFillEllipse(btRed,gid,25,10,23,8);
//画绿按钮
/*模仿红按钮自己画出绿,蓝按钮*/
//画蓝按钮
//GR_GC_ID t;// 为欢迎词选择字体颜色.
t=GrNewGC();
GrSetGCForeground(t,BLACK);
GrSetGCBackground(t,WHITE);
font=GrCreateFont("times.ttf",90,NULL);// 为欢迎词设置字体
GrSetGCFont(t,font);
DCTimer = GrNewGC();
GrSetGCForeground(DCTimer,BLACK);
GrSetGCBackground(DCTimer,WHITE);
ChineseFont=GrCreateFont("HZKFONT",20,NULL);
GrSetGCFont(DCTimer,ChineseFont);
//给红按钮加上文字“RED”
//GrSetGCForeground(t,YELLOW);
//GrSetGCBackground(t,RED);
//GrText(btRed,t,16,14,"RED",-1,GR_TFASCII);
/*给绿,蓝按钮加上文字*/
//GrSelectEvents(btLamp,GR_EVENT_MASK_EXPOSURE |
// GR_EVENT_MASK_BUTTON_DOWN); //为红窗口(按钮)选择事件
//GrSelectEvents(btRed,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN);
/*补上为蓝,绿窗口选择事件的代码*/
//printf("Ready.\n");
memset(szText,0,sizeof(szText));
memset(szTimer,0,sizeof(szTimer));
while(1)
{
GrGetNextEventTimeout(&event, 100L);
switch(event.type)
{
case GR_EVENT_TYPE_EXPOSURE:
GrText(w,t,10,100,"+ <--Click here ",-1,GR_TFASCII);
break;
case GR_EVENT_TYPE_CLOSE_REQ:
GrClose();
exit(0);
break;
case GR_EVENT_TYPE_BUTTON_DOWN:
sprintf(szText,"+ OK! Offset X= %d, Y= %d",event.mouse.x-10-2,event.mouse.y-100-2);
GrSetGCForeground(t,WHITE);
GrSetGCBackground(t,WHITE);
GrFillRect(w,t,10,100,300,100);
GrSetGCForeground(t,BLACK);
GrSetGCBackground(t,WHITE);
GrText(w,t,10,100,szText,-1,GR_TFASCII);
break;
case GR_EVENT_TYPE_TIMEOUT:
nSeconds = ((rBCDSEC & 0x70) >> 4)*10 + (rBCDSEC & 0xf);
nMinutes = ((rBCDMIN & 0x70) >> 4)*10 + (rBCDMIN & 0xf);
nHours = ((rBCDHOUR & 0x70) >> 4)*10 + (rBCDHOUR & 0xf);
nDay = ((rBCDDAY & 0x70) >> 4)*10 + (rBCDDAY & 0xf);
nMonth = ((rBCDMON & 0x70) >> 4)*10 + (rBCDMON & 0xf);
nYear = rBCDYEAR;
//GrSetGCForeground(t,WHITE);
//GrText(w,DCTimer,10,20,szTimer,-1,GR_TFASCII);
//sprintf(szTimer,"20%02d/%02d/%02d %02d:%02d:%02d",nYear,nMonth,nDay,nHours,nMinutes,nSeconds);
//GrSetGCForeground(t,BLACK);
//GrText(w,DCTimer,10,20,szTimer,-1,GR_TFASCII);
//GrFlush();
break;
default:
break;
}
}
}
/********************************************************************************/
void draw_Error_win(char *arg[])
{
GR_WINDOW_ID winError;
winError=GrNewWindow(w,20,100,400,300,1,WHITE,BLUE);
}
/********************************************************************************/
void do_btdown(GR_EVENT_BUTTON *event)
{
//调用鼠标事件
//以下这段为红按钮设置事件响应
if(event->wid==btRed)// 判断事件发生区域(在哪个窗口)
{
gLamp=GrNewGC();
GrSetGCForeground(gLamp,RED);
GrSetGCBackground(gLamp,GREEN);
GrFillEllipse(btLamp,gLamp,25,25,22,22);
return;
}
/*在这里补上绿,蓝按钮的事件响应代码*/
}
/***************************************************************************/
/*
void do_keydown(GR_EVENT_KEY_DOWN *event)
{
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -