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

📄 demoevent.c

📁 基于嵌入式图形库microwindows的简单示例程序10例
💻 C
字号:
/******************************************************************Microwindows 事件驱动演示程序 zhang kaohua 2003.12.3*************演示内容:鼠标事件,键盘事件.*****************************************************************/#define MWINCLUDECOLORS#include<stdio.h>#include"nano-X.h"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_WINDOW_ID we;   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,70,30,500,400,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     w=GrNewWindow(GR_ROOT_WINDOW_ID,10,10,300,200,3,GREEN,BLUE);//实例化根窗口   //gc=GrNewGC();//实例化上下文   GrMapWindow(w);//显示窗口   //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);   btGreen=GrNewWindow(w,125,150,50,20,1,WHITE,BLUE);   btBlue=GrNewWindow(w,195,150,50,20,1,WHITE,BLUE);   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);      //画绿按钮   gid=GrNewGC();   GrSetGCForeground(gid,GREEN);   GrSetGCBackground(gid,WHITE);   GrFillEllipse(btGreen,gid,25,10,23,8);   //画蓝按钮   gid=GrNewGC();   GrSetGCForeground(gid,BLUE);   GrSetGCBackground(gid,WHITE);   GrFillEllipse(btBlue,gid,25,10,23,8);      //GR_GC_ID t;//为欢迎词选择字体颜色.   t=GrNewGC();   GrSetGCForeground(t,RED);   GrSetGCBackground(t,GREEN);   font=GrCreateFont("times.ttf",30,NULL);//为欢迎词设置字体   GrSetGCFont(t,font);   GrText(w,t,75,115,"WELCOME TO BEIJING CHINA",-1,GR_TFASCII);   GrSetGCForeground(t,YELLOW);   GrSetGCBackground(t,RED);   GrText(btRed,t,16,14,"RED",-1,GR_TFASCII);   GrSetGCForeground(t,YELLOW);   GrSetGCBackground(t,GREEN);   GrText(btGreen,t,8,14,"GREEN",-1,GR_TFASCII);   GrSetGCForeground(t,YELLOW);   GrSetGCBackground(t,BLUE);   GrText(btBlue,t,14,14,"BLUE",-1,GR_TFASCII);   we=GrNewWindow(w,260,10,30,20,2,YELLOW,BLUE);   GrMapWindow(we);   GrSetGCForeground(gc,RED);   GrSetGCBackground(gc,YELLOW);   GrText(we,gc,2,15,"EXIT",-1,GR_TFASCII);   //为个窗口(按钮)选择事件   GrSelectEvents(btRed,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN);   GrSelectEvents(btGreen,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN);   GrSelectEvents(btBlue,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN);   GrSelectEvents(btLamp,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_DOWN);   GrSelectEvents(we,GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_BUTTON_UP);while(1){  GrGetNextEvent(&event);  //printf("by threewater test\n");   switch(event.type)  {   case GR_EVENT_TYPE_BUTTON_DOWN:        do_btdown(&event.button);        break;   case GR_EVENT_TYPE_BUTTON_UP:				    if (event.button.wid == we)              {		            GrClose();		            exit(0);              }				 break;   //case GR_EVENT_TYPE_KEY_DOWN:   //	do_keydown(&event.key);   //	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;   } if(event->wid==btGreen)   {    gLamp=GrNewGC();    GrSetGCForeground(gLamp,GREEN);    GrFillEllipse(btLamp,gLamp,25,25,22,22);    return;   } if(event->wid==btBlue)   {    gLamp=GrNewGC();    GrSetGCForeground(gLamp,BLUE);    GrFillEllipse(btLamp,gLamp,25,25,22,22);    return;   } /*if (event->wid == we)   {		GrClose();		exit(0);   }*/}/*void do_keydown(GR_EVENT_KEY_DOWN *event){}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -