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

📄 disphistory.c

📁 采用MINIGUI开发的一套GUI界面
💻 C
📖 第 1 页 / 共 3 页
字号:
  	
  	// RRDrawTime(hmemDC,0, 560-128+68,320);
  	 //RRDrawTime(hmemDC,128, 560-128*2+68,320);
          //显示标尺线
		SetPenColor(hmemDC,PIXEL_red);
     		MoveTo(hmemDC,guage_x,40);
     		LineTo(hmemDC,guage_x,360);		
	
}
 //  
void InitHistDlg(HWND  hDlg)
{
     int i;
     unsigned char str[5];
     int id;
     int firsttime;
     int lasttime;
     long time;
	time=86400;
//默认为历史显示1天(86400秒)的数据为
	 channel_hist=(CHANNALHIST* )malloc(32*sizeof(CHANNALHIST));
	 for (id=0;id<gchannum;id++) 	
  	{
  	channel_hist[id].record=(STRURECORD *)malloc(20*sizeof(STRURECORD));
  	 bzero(channel_hist[id].point,sizeof(channel_hist[id].point));
 	 strcpy(channel_hist[id].name,channel_conf[id].name);	
  	 strcpy(channel_hist[id].unit,channel_conf[id].unit);	
	 strcpy(channel_hist[id].data,channel_disp[id].data);
	 channel_hist[id].guage_x=560;
	
	 }

}
/*
窗口处理函数

*/
int  HistoryDialogProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
HDC hmemDC;
int index; //时间对应的文件中数据点的索引
char dis[20];
static  RECT  rect;
static int guage_x;
static  BOOL bFresh=0;
 gal_pixel bar_back_color,bar_rect_color,bar_text_color; 
int id ;
    	id= LOWORD (wParam);
    switch (message) 
    { 
    case MSG_INITDIALOG:	
		//建立文件(已经含有首次索引的建立)
		 	InitHistDlg( hDlg);
			end_sec=GetSeconds(hDlg);
			start_sec=end_sec-560/histzoom;
			ReadHisData(1,start_sec,end_sec);
		  	hist_dot_seco=end_sec;
			SetTimer(hDlg,_ID_TIMER_HIST,100);	
		return 1;
     case MSG_SHOWWINDOW:
		      
		 break;       	        
		case MSG_DESTROY :			
			DestroyAllControls(hDlg);
		 	KillTimer(hDlg,_ID_TIMER_HIST); 
			
		break;

      case MSG_TIMER:
		 //InvalidateRect (hDlg, NULL, TRUE);	
		  break;	 
	case MSG_READRECORD:
			sprintf(topinfo,"历史%2d/%2d/%2d",year,mont,days);	
    			 SecondsToTime(start_sec);
			printf("MSG_READRECORD:  ");
			//  ReadHisData(1,11111, 112222 );
			 InvalidateRect(hDlg,NULL,TRUE);
			break;		 
	case MSG_PAINT:		
                 	hdc = BeginPaint(hDlg);  					
                 	hmemDC=CreateCompatibleDC(hdc); 
             		bar_back_color=PIXEL_black;//背景	 
             		bar_rect_color=RGB2Pixel(hmemDC,0,0,255);//边框颜色
             		bar_text_color=PIXEL_lightwhite;//RGB2Pixel(hmemDC,0,0,255);//文字颜色	 
                	SetBrushColor(hmemDC,bar_back_color);//lightwhite
                	SetBkMode(hmemDC,BM_TRANSPARENT);//?   SetBkMode
               	FillBox(hmemDC,0,0,WIDTH-LEFT,HEIGHT-TOP-BOTTOM);
                	SetBkMode(hmemDC,BM_TRANSPARENT);
    		   	DrawHistoryline (hmemDC,0 ,6,0,0,640-80,400);//,PandectDataStruct *channel_disp)
  
		   	DrawHistCurve (hmemDC,0 ,6,0,0,560,400);//,PandectDataStruct *channel_disp)
		 
                	BitBlt(hmemDC,0,0,WIDTH-LEFT,HEIGHT-TOP-BOTTOM,hdc,LEFT,0,0);

                	DeleteCompatibleDC(hmemDC);   
		//----------------------------------		
                //重新更新TOP栏目,TEST
               // dis=SecondsToTime(start_sec);
		//printf("/n%s/n",dis);
              //    sprintf(topinfo,"历史%s", dis);	
                EndPaint(hDlg,hdc);
               return 0;
	case MSG_COMMAND:
       {
          	 if(id==HIST_UP)    //   上一时刻
           		{
           		 printf("histtory up button is pressed/n");
	   	  	SetRect (&rect, 80,0,640,400);
	   		InvalidateRect (hDlg, &rect, FALSE);	
			} 
	
		   if(id==HIST_DOWN)    //   下一时刻
		   	{	
		   	SetRect (&rect, 80,0,640,400);
		 	InvalidateRect (hDlg, &rect, FALSE);	
			}		   
		   if(id==HIST_ZOOM)    
		   	{ 
		 	histzoom=histzoom*2;			
			} 
          	   if(id==HIST_DBACK)    
          		{  
          		gdisp_mode=last_mode;
			EndDialog (hDlg, 0);
			}
	  	 if(id==HIST_BUTTON_DOWN)    //下载按键
	   	{
	   		
	   	} if(id==HIST_BUTTON_SEARCH)    //下载按键
	   	{
	   		 //恢复下面按钮的功能显示
	//	SetDlgItemText(hDlg,  HIST_ZOOM," " );
		// SetDlgItemText(hDlg,  HIST_DBACK," " );
		 SetDlgItemText(hDlg,  HIST_BUTTON_DOWN," " );
		 SetDlgItemText(hDlg,  HIST_BUTTON_CLEA," " );
		 SetDlgItemText(hDlg,  HIST_BUTTON_OPER," " );
             SetDlgItemText(hDlg,  HIST_BUTTON_CONF," " );
		 SetDlgItemText(hDlg,  HIST_BUTTON_SHUT,"取消\nESC" );
		SetDlgItemText(hDlg,  HIST_BUTTON_SEARCH,"查询\nF7" );
		
	   	}
	}
	break;
	
 case MSG_KEYDOWN:
	 	if(!keydowned)
	 		{
	if(id==KEY_LEFT)SendDlgItemMessage(hDlg, HIST_LEFT, MSG_LBUTTONDOWN, 0,0);
	if(id==KEY_RIGHT)SendDlgItemMessage(hDlg, HIST_RIGHT, MSG_LBUTTONDOWN, 0,0);
	if(id==KEY_UP)SendDlgItemMessage(hDlg, HIST_UP, MSG_LBUTTONDOWN, 0,0);
	if(id==KEY_DOWN)SendDlgItemMessage(hDlg, HIST_DOWN, MSG_LBUTTONDOWN, 0,0);
	if(id==KEY_ENTER)SendDlgItemMessage(hDlg, HIST_ZOOM, BM_SETSTATE, BST_PUSHED,0);
	if(id==KEY_EXIT)SendDlgItemMessage(hDlg, HIST_DBACK, BM_SETSTATE, BST_PUSHED,0);
       			 if(id==KEY_DOWNLOAD)SendMessage (GetDlgItem(hDlg,HIST_BUTTON_DOWN),BM_SETSTATE,BST_PUSHED,0);
       			 if(id==KEY_CLEAR)SendMessage (GetDlgItem(hDlg,HIST_BUTTON_CLEA),BM_SETSTATE,BST_PUSHED,0);
       			 if(id==KEY_OPERATE)SendMessage (GetDlgItem(hDlg,HIST_BUTTON_OPER),BM_SETSTATE,BST_PUSHED,0);
       			 if(id==KEY_CONF)SendMessage (GetDlgItem(hDlg,HIST_BUTTON_CONF),BM_SETSTATE,BST_PUSHED,0);
       			 if(id==KEY_SEARCH)SendMessage (GetDlgItem(hDlg,HIST_BUTTON_SEARCH),BM_SETSTATE,BST_PUSHED,0);
       			 if(id==KEY_SHUT)SendMessage (GetDlgItem(hDlg,HIST_BUTTON_SHUT),BM_SETSTATE,BST_PUSHED,0);



	keydowned=1;
		}
	  break;			 
 case MSG_KEYUP:
		keydowned=0;
	 if(id==KEY_DOWNLOAD)SendMessage (GetDlgItem(hDlg,HIST_BUTTON_DOWN),BM_SETSTATE,0,0);
       			 if(id==KEY_CLEAR)SendMessage (GetDlgItem(hDlg,HIST_BUTTON_CLEA),BM_SETSTATE,0,0);
       			 if(id==KEY_OPERATE)SendMessage (GetDlgItem(hDlg,HIST_BUTTON_OPER),BM_SETSTATE,0,0);
       			 if(id==KEY_CONF)SendMessage (GetDlgItem(hDlg,HIST_BUTTON_CONF),BM_SETSTATE,0,0);
       			 if(id==KEY_SEARCH)SendMessage (GetDlgItem(hDlg,HIST_BUTTON_SEARCH),BM_SETSTATE,0,0);
       			 if(id==KEY_SHUT)SendMessage (GetDlgItem(hDlg,HIST_BUTTON_SHUT),BM_SETSTATE,0,0);

		
		if(id==KEY_EXIT)  		
			{
			SendDlgItemMessage(hDlg, HIST_DBACK, BM_SETSTATE, 0,0);
			EndDialog (hDlg, 0);
			}
		if(id==KEY_LEFT) 	//   上一时刻
			{
			GetDistance( 0); 	
			SendDlgItemMessage(hDlg, HIST_LEFT, MSG_LBUTTONUP, 0,0);
	  		bFresh=1;
			//SendMessage(GetHosting(hDlg),MSG_READRECORD,0,0);
			  SetRect (&rect, 80,0,640,400);
	   		InvalidateRect (hDlg, &rect, FALSE);	
			}
		if(id==KEY_RIGHT) //   下一时刻
			{
			//根据现在guageline象素位置得到INTERVAL
			GetDistance(1);	

			//SecondsToTime(1111);
			 bFresh=1;
		   	SetRect (&rect, 80,0,640,400);
		 	InvalidateRect (hDlg, &rect, FALSE);	
			SendDlgItemMessage(hDlg, HIST_RIGHT, MSG_LBUTTONUP, 0,0);
			
			}
		if(id==KEY_UP)       //上一时间段
			{
			SendDlgItemMessage(hDlg, HIST_UP, MSG_LBUTTONUP, 0,0);
			end_sec=start_sec;
			start_sec=end_sec-560/(histzoom);
			ReadHisData(1,start_sec,end_sec);
			bFresh=1;
  			SetRect (&rect, 80,0,640,400);
	   		InvalidateRect (hDlg, &rect, FALSE);	

			}
		if(id==KEY_DOWN) //上一时间段
			{	
			SendDlgItemMessage(hDlg, HIST_DOWN, MSG_LBUTTONUP, 0,0);
			
			start_sec=end_sec;
			end_sec=start_sec+560/(histzoom);
			if(end_sec>nowseconds)
				{
				end_sec=nowseconds;
				start_sec=end_sec-560/(histzoom);
				}
				
			ReadHisData(1,start_sec,end_sec);
			bFresh=1;
  			SetRect (&rect, 80,0,640,400);
	   		InvalidateRect (hDlg, &rect, FALSE);	


	 		}
		if(id==KEY_ENTER)     //enter键,缩放功能   
			{	
	 		SendDlgItemMessage(hDlg, HIST_ZOOM, BM_SETSTATE, 0,0);
			histzoom=histzoom*2;
			if(histzoom>16)histzoom=1;
			//重新计算开始显示的时间
			start_sec=end_sec-560/histzoom;			
			bFresh=1;
  			SetRect (&rect, 80,0,640,400);
	   		InvalidateRect (hDlg, &rect, FALSE);	
	 	 	}
            //处理底端按键的程序
                ScanBottomKey( hDlg ,id );	
		//增加
 	if(id==KEY_SEARCH)
	     {	
       	 SendMessage (GetDlgItem(hDlg,HIST_BUTTON_SEARCH),BM_SETSTATE,0,0);
		 
		 //改变下面按钮的功能显示
		//SetDlgItemText(hDlg,  HIST_ZOOM," " );
		 //SetDlgItemText(hDlg,  HIST_DBACK," " );
		 SetDlgItemText(hDlg,  HIST_BUTTON_DOWN," " );
		 SetDlgItemText(hDlg,  HIST_BUTTON_CLEA," " );
		 SetDlgItemText(hDlg,  HIST_BUTTON_OPER," " );
             SetDlgItemText(hDlg,  HIST_BUTTON_CONF," " );
		 SetDlgItemText(hDlg,  HIST_BUTTON_SHUT,"取消\nESC" );
		SetDlgItemText(hDlg,  HIST_BUTTON_SEARCH,"查询\nF7" );
		 HistSearchDlg ( hDlg);
		 
 		}
		break;   	
	case MSG_CLOSE:	
    		EndDialog (hDlg, 0);
		
		break;
    	}
   	 return DefaultDialogProc (hDlg, message, wParam, lParam);
    

}
/*

历史显示页面对话框


*/
void  HistoryDlg (HWND hWnd)
{
    Dlg_history.controls = ctrl_history;
    
    DialogBoxIndirectParam (&Dlg_history, hWnd, HistoryDialogProc, 0L);
}


//
void InitSearchDlg(HWND hDlg)
{  int i;
     unsigned char str[5];
     int id;
     int firsttime;
     int lasttime;
     long time;
//init the dlg
  for (i=0;i<=(year-2000);i++){
	 sprintf(str,"%04d",2000+i);
	 SendDlgItemMessage(hDlg,HIST_YEAR,CB_ADDSTRING,0,(LPARAM)str);
     	}
    for (i=0;i<=12;i++){
	 sprintf(str,"%02d",i);
	 SendDlgItemMessage(hDlg,HIST_MONT,CB_ADDSTRING,0,(LPARAM)str);
     	}
    for (i=0;i<=31;i++){
	 sprintf(str,"%02d",i);
	 SendDlgItemMessage(hDlg,HIST_DATE,CB_ADDSTRING,0,(LPARAM)str);
     	}
    for (i=0;i<=24;i++){
	 sprintf(str,"%02d",i);
	 SendDlgItemMessage(hDlg,HIST_HOUR,CB_ADDSTRING,0,(LPARAM)str);
     	}
    for (i=0;i<=59;i++){
	 sprintf(str,"%02d",i);
	 SendDlgItemMessage(hDlg,HIST_MINU,CB_ADDSTRING,0,(LPARAM)str);
     	}
//得到当前时间    
    SendMessage(GetDlgItem(hDlg,HIST_YEAR),CB_SETCURSEL,(WPARAM)(year-2000),0);
    SendMessage(GetDlgItem(hDlg,HIST_MONT),CB_SETCURSEL,(WPARAM)(mont),0);
    SendMessage(GetDlgItem(hDlg,HIST_DATE),CB_SETCURSEL,(WPARAM)(days),0);
    SendMessage(GetDlgItem(hDlg,HIST_HOUR),CB_SETCURSEL,(WPARAM)(hour),0);
    SendMessage(GetDlgItem(hDlg,HIST_MINU),CB_SETCURSEL,(WPARAM)(minu),0);



}





/*历史查询按钮弹出的对话框*/
int  SearchDialogProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
HDC hdc,hmemDC;
   int id; 
    id= LOWORD (wParam);
    switch (message) 
    { 
    	case MSG_INITDIALOG:		
		return 1;
	  case MSG_SHOWWINDOW:
			{  
				InitSearchDlg(hDlg);
		      }  		      
		 break;       	        
	case MSG_PAINT:
			hdc = BeginPaint(hDlg);  
			  	SetTextColor(hdc,PIXEL_black);
     	      		SetBkColor(hdc,PIXEL_lightgray);
     			SelectFont(hdc,songgb16font);
                	SetTextColor(hdc,PIXEL_black);
     	      		SetBkColor(hdc,PIXEL_lightgray);
					
			TextOut(hdc, 60,20, "请输入要查询的时间:");
	    		TextOut(hdc, 5,50, "年:");
			TextOut(hdc, 100,50, "月:");
	    		TextOut(hdc, 210,50, "日:");
				
			TextOut(hdc, 5,80, "时");
			TextOut(hdc, 100,80, "分");
			
			EndPaint(hDlg,hdc);		
		 break;    
	case MSG_KEYDOWN:
			{
	if(id==KEYS_SEARCH)SendDlgItemMessage(hDlg, HIST_SEARCH, BM_SETSTATE, BST_PUSHED,0);
	if(id==KEYS_CANCEL)SendDlgItemMessage(hDlg, HIST_SBACK, BM_SETSTATE, BST_PUSHED,0);
	keydowned=1;
		}
	  break;			 
 case MSG_KEYUP:
		keydowned=0;
	 
	if(id==KEYS_SEARCH)
		{
		
		 SendDlgItemMessage(hDlg, HIST_SEARCH , BM_SETSTATE, 0,0);
		 SendMessage (hDlg, MSG_COMMAND, HIST_SEARCH,0); 

		}
	if(id==KEYS_CANCEL){
		 SendDlgItemMessage(hDlg, HIST_SBACK, BM_SETSTATE, 0,0);
		//右下角按键响应
		 SendMessage (hDlg, MSG_COMMAND, HIST_SBACK,0);	//进入模式按钮响应		
				}


	
			  break;	
	case MSG_COMMAND:
       	{  
		  if(id==HIST_SEARCH)    
		   	{
		   	//历史查询
		   	end_sec=GetSeconds(hDlg);
			start_sec=end_sec-640/histzoom;
			ReadHisData(1,start_sec,end_sec);	
			SendMessage(GetHosting(hDlg),MSG_READRECORD,0,0) ;

			}
		    if(id==HIST_SBACK)    
		   	{
		   	//关闭查询对话框
			 EndDialog (hDlg, 0);
			SendMessage(GetHosting(hDlg),MSG_COMMAND,HIST_BUTTON_SEARCH,0) ;


			
			}
		}
		break;
    case MSG_CLOSE:		
		EndDialog (hDlg, 0);

		break;
    	}
   	 return DefaultDialogProc (hDlg, message, wParam, lParam);
    
}

/*

历史查询页面对话框


*/
void  HistSearchDlg (HWND hWnd)
{
    Dlg_Search.controls = ctrl_search;
    
    DialogBoxIndirectParam (&Dlg_Search, hWnd, SearchDialogProc, 0L);
}



⌨️ 快捷键说明

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