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

📄 bmpbkgnd.c

📁 利用MiniGUI变得简单的嵌入式图形界面程序。达到地图移动菜单操作等效果。
💻 C
📖 第 1 页 / 共 3 页
字号:
#include <stdio.h>#include <stdlib.h>#include<sys/types.h>#include<sys/unistd.h>#include <string.h>#include <minigui/common.h>#include <minigui/minigui.h>#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/control.h>#include <minigui/mgext.h>#include <time.h>#include "pthread.h"#define NORTH 0#define EAST 1#define SOUTH 2#define WEST 3#define ALL 4#define MWINDOW_LX 0#define MWINDOW_TY 0#define MWINDOW_RX 640#define MWINDOW_BY 480#define TIMER0 0#define TIMER1 1#define TIMER2 2#define TIMER3 3#define TIMER4 4int m2 =0, n2=0;double gps_x,gps_y;double gps_xx,gps_yy;int q =1;int flt=0;int single=0;static float  p=1;       //地图缩放尺寸.int num =0;           //信息节点代号.int old_num=0;struct prodcons buffer;HWND hMainWnd; MSG Msg;struct record
{       int num;//事件编码       double x;       double y;  //接点的坐标       int fangxiang,youxian,quyu;  
};

struct node
{       int num;//事件编码        double x;        double y;  //接点的坐标
	int fangxiang,youxian,quyu; 	struct	node *next;		
};struct record1
{       int number;           double x1;        double y1;        double x2;        double y2;};struct shuzhi
{           int number;        double x1;        double y1;        double x2;        double y2;        struct shuzhi *next;        struct node *left,*mid,*right;			
}*head,*find,*old,*find1,*j;	/* 链表首指针 */struct prodcons {                double x,y,xx,yy;      /* the actual data */        pthread_mutex_t lock;         /* mutex ensuring exclusive access to buffer */        int s;        pthread_cond_t notempty;      /* signaled when buffer is not empty */};
int mapbutton( int x, int y)          //指定触摸屏操作区域;{    if(y>445)             //主菜单    {       if(x>0 &&x<52)       return 1;       if(x>68 &&x<141)     return 2;       if(x>161 &&x<234)    return 3;       if(x>254 &&x<326)    return 4;       if(x>346 &&x<405)    return 5;       if(x>428 &&x<483)    return 6;       if(x>509 &&x<640)    return 7;    }    if(x>254 &&x<326)             //查询菜单    {       if(y>420 && y<435)   return 8;       if(y>385 && y<410)   return 10;          }    if(x>509 &&x<640)            //分类菜单    {       if(y>425 &&y<445)    return 11;       if(y>400 &&y<420)    return 12;       if(y>360 &&y<390)    return 13;       if(y>320 &&y<350)    return 14;    }    return 100;}void voiceplay(int num){        switch(num)		{		case 1:			system("./voice/traffic/1.sh &");			break;		case 2:			system("./voice/traffic/2.sh &");			break;		case 3:			system("./voice/traffic/3.sh &");			break;		case 4:			system("./voice/traffic/4.sh &");			break;		case 5:			system("./voice/traffic/5.sh &");			break;		case 6:			system("./voice/traffic/6.sh &");			break;		case 7:			system("./voice/traffic/7.sh &");			break;		case 8:			system("./voice/traffic/8.sh &");			break;		case 9:			system("./voice/traffic/9.sh &");			break;		case 102:			system("./voice/soci/102.sh &");			break;				case 103:			system("./voice/soci/103.sh &");			break;		case 104:			system("./voice/soci/104.sh &");			break;		case 105:			system("./voice/soci/105.sh &");			break;		case 106:			system("./voice/soci/106.sh &");			break;		case 107:			system("./voice/soci/107.sh &");			break;		case 201:			system("./voice/comm/201.sh &");			break;		case 202:			system("./voice/comm/202.sh &");			break;		default:  break;		}}char*  bmpinfo(int u){      char info[50];     switch(u)		{		case 1:			strcpy(info,"./road icon/2huandaoxingshi.bmp");			break;		case 2:  			strcpy(info,"./road icon/8xiansu40.bmp");			break;		case 3:			strcpy(info,"./road icon/4jinzhimingdi.bmp");			break;		case 4:			strcpy(info,"./road icon/3jinzhichaoche.bmp");			break;		case 5:			strcpy(info,"./road icon/8xiansu40.bmp");			break;		case 6:  			strcpy(info,"./road icon/6xiansu60.bmp");			break;		case 7:			strcpy(info,"./road icon/5jinzhitingfang.bmp");			break;		case 8:			strcpy(info,"./road icon/8xiansu40.bmp");			break;		case 9:                        strcpy(info,"./road icon/8xiansu40.bmp");						break;                case 10:                        strcpy(info,"./road icon/jinzhidiaoyou.bmp");						break;		case 102:			strcpy(info,"./road icon/11xuexiao.bmp");			break;						case 103:			strcpy(info,"./road icon/12yinhang.bmp");				break;		case 104:			strcpy(info,"./road icon/9qichezhan.bmp");			break;		case 105:			strcpy(info,"./road icon/cityhall.bmp");			break;		case 106:			strcpy(info,"./road icon/13yiyuan.bmp");			break;		case 107:			strcpy(info,"./road icon/just.bmp");			break;		case 201:			strcpy(info,"./road icon/15shangyecheng.bmp");			break;		case 202:			strcpy(info,"./road icon/14guojifandian.bmp");			break;				default:  break;       		}                   return &info;}static int WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){    int temp=0;   static BITMAP s_map,s_map1,s_map3;   static BITMAP s_button,s_car;   static BITMAP button1,button2,button3,button4,button5,button6,button7;   static BITMAP s_noti;   static BITMAP ser_menu,ser_menu1,ser_menu3;   static BITMAP de_menu,de_menu1,de_menu2,de_menu3,de_menu4;     static int flag1 =0,flag2 =0,flag3=0,flag4 =0; //flag1区分菜单栏7个钮的操作;flag2判断弹出哪个菜单,0默认无,1查询菜单,2,广告菜单;                                         //flag3声音操作,0默认不提示,1表示启动提示.            //替换的GPS	坐标节点      static int v=3;       //id号增量.   static int id=0;      //获得后台执行的进程号变量.   char play[100];       //获得后台执行操作的字符串.   char *info;     //信息路径字符串.   HDC hdc;        int cx, cy, rs;     //传递触摸屏操作区域的坐标变量.     switch (message) {       case MSG_CREATE:                           LoadBitmapFromFile(HDC_SCREEN,&s_map,"./map/zjmap.bmp");                LoadBitmapFromFile(HDC_SCREEN,&s_map1,"./map/zjmap-post.bmp");              LoadBitmapFromFile(HDC_SCREEN,&s_map3,"./map/zjmap-petro.bmp");              SetTimer(hWnd,TIMER0,100);//地图移动定时.	      SetTimer(hWnd,TIMER1,25); //菜单显示定时.                            printf("MSG_CREATE!\n");                  break;         case MSG_PAINT:                 single=1;                     hdc = BeginPaint(hWnd);               LoadBitmapFromFile(HDC_SCREEN,&s_button,"./button1/button1.bmp");              LoadBitmapFromFile(HDC_SCREEN,&s_car,"./button1/car.bmp");                              m2 =1293*(-1);              n2 =1063*(-1);	      FillBoxWithBitmap (hdc,m2+320,n2+200,2040*p,1530*p,&s_map);              FillBoxWithBitmap (hdc,0,440,640,40,&s_button);                FillBoxWithBitmap(hdc,320,198,10*p,10*p,&s_car);              EndPaint(hWnd, hdc);              printf("MSG_PAINT\n");              break;         case MSG_TIMER:               
		 if (wParam == TIMER0)
		 { 
		   printf("MSG_TIMER0\n");                   hdc = GetClientDC(hWnd);                    m2 =gps_xx*(-1);                    n2 =gps_yy*(-1);printf("*********************   %lf     %lf **********************\n",gps_xx,gps_yy);                                        switch(q){                    case 1:
		          FillBoxWithBitmap (hdc,m2*p+320,n2*p+200,2040*p,1530*p,&s_map);
		          break;                    case 2:                          FillBoxWithBitmap (hdc,m2*p+320,n2*p+200,2040*p,1530*p,&s_map1);                                    break;                    case 4:                           FillBoxWithBitmap (hdc,m2*p+320,n2*p+200,2040*p,1530*p,&s_map3);                                                     break;                    default:break;
		    }
	           FillBoxWithBitmap(hdc,320,198,10*p,10*p,&s_car);                   if(num!=old_num)                  {                    printf("  num=%d old_num=%d\n",num,old_num);                   if(flag3 ==0 )                   {                      voiceplay(num);//*******播放信息节点语音.                     id =getpid();                         v+=4;                   }                     if(num>0&&num<101)                     { flag4=1;                      info=bmpinfo(num);                     LoadBitmapFromFile(HDC_SCREEN,&s_noti,info);                     FillBoxWithBitmap(hdc,275,155,90,130,&s_noti);                     printf("              info=%s \n",info);                        }                     else if(num>101&&num<200)                         {    flag4=1;                                                         info=bmpinfo(num);                              LoadBitmapFromFile(HDC_SCREEN,&s_noti,info);                              switch(num){                             case 107:                              FillBoxWithBitmap(hdc,256,166,128,109,&s_noti);break;                             case 106:                              FillBoxWithBitmap(hdc,204,146,233,154,&s_noti);break;                             case 105:                              FillBoxWithBitmap(hdc,228,158,185,125,&s_noti);break;                             default:                                FillBoxWithBitmap(hdc,275,155,90,130,&s_noti);                             }                                                 }                         else if(num>200)                             {   flag4=1;                                 info=bmpinfo(num);                                 LoadBitmapFromFile(HDC_SCREEN,&s_noti,info);                                 if(num ==201)                                        FillBoxWithBitmap(hdc,197,150,246,140,&s_noti);                                 else    FillBoxWithBitmap(hdc,220,154,200,133,&s_noti);                                                             }                    }                 old_num=num;                   if(flag4 ==1)                {SetTimer(hWnd,TIMER2,150);                 printf("@@@@@@@@@@@@@@@@@@@@@@@@@@FLAG4 = %d@@@@@@@@\n",flag4);		}                 ReleaseDC(hdc);
		 }                 if(wParam == TIMER2)                   { hdc = GetClientDC(hWnd);                     SetTimer(hWnd,TIMER4,150);                       if(num>0&&num<101)                            FillBoxWithBitmap(hdc,550,0,90,130,&s_noti);                                            else if(num>101&&num<200)                         {    switch(num){                             case 107:                              FillBoxWithBitmap(hdc,512,0,128,109,&s_noti);break;                             case 106:                              FillBoxWithBitmap(hdc,407,0,233,154,&s_noti);break;                             case 105:                              FillBoxWithBitmap(hdc,475,0,185,125,&s_noti);break;                             default:                                FillBoxWithBitmap(hdc,550,0,90,130,&s_noti);                             }                                                 }                           else if(num>200)                             {                                    if(num ==201)                                        FillBoxWithBitmap(hdc,394,0,246,140,&s_noti);                                 else    FillBoxWithBitmap(hdc,440,0,200,133,&s_noti);                                                             }                    flag4=0;                                  KillTimer(hWnd,TIMER2);                    ReleaseDC(hdc);                  }                   if(wParam == TIMER4)                   { hdc = GetClientDC(hWnd);                                             if(num>0&&num<101)                            FillBoxWithBitmap(hdc,550,0,90,130,&s_noti);                    

⌨️ 快捷键说明

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