⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mwtest.c

📁 在uClinux 2.4X 的GUI 驱动 microwindows-Drives 测试OK
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -