📄 bmpbkgnd.c
字号:
#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 + -