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

📄 configtime.c

📁 采用MINIGUI开发的一套GUI界面
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <pwd.h>
#include <math.h>
#include <sys/time.h>
#include <pthread.h>
#include <semaphore.h>
#include <stdio.h>
#include <unistd.h>


#include <fcntl.h>

#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#include <sys/types.h>
#include <sys/shm.h>
#include <sys/ipc.h>

#include <sys/stat.h>
#include <fcntl.h>
#include "common.h"
#include "configtime.h"
#include "fonts.h"
void TimeDialogInit(HWND hDlg)
{
  int i;
  unsigned char str[5];
unsigned char *format[]={"年/月/日","月/日/年"};
        SendMessage(GetDlgItem(hDlg,BOX_TIME_FORMAT),CB_ADDSTRING,0, (LPARAM)format[0]) ;
        SendMessage(GetDlgItem(hDlg,BOX_TIME_FORMAT),CB_ADDSTRING,0, (LPARAM)format[1]) ;
  //初始化组合框	 
     for (i=0;i<=(year-2000);i++){
	 sprintf(str,"%04d",2000+i);
	 SendDlgItemMessage(hDlg,BOX_TIME_YEAR,CB_ADDSTRING,0,(LPARAM)str);
     	}
    for (i=0;i<=12;i++){
	 sprintf(str,"%02d",i);
	 SendDlgItemMessage(hDlg,BOX_TIME_MONT,CB_ADDSTRING,0,(LPARAM)str);
     	}
    for (i=0;i<=31;i++){
	 sprintf(str,"%02d",i);
	 SendDlgItemMessage(hDlg,BOX_TIME_DAYS,CB_ADDSTRING,0,(LPARAM)str);
     	}

	
    for (i=0;i<=24;i++){
	 sprintf(str,"%02d",i);
	 SendDlgItemMessage(hDlg,BOX_TIME_HOUR,CB_ADDSTRING,0,(LPARAM)str);
     	}
    for (i=0;i<=59;i++){
	 sprintf(str,"%02d",i);
	 SendDlgItemMessage(hDlg,BOX_TIME_MINU,CB_ADDSTRING,0,(LPARAM)str);
     	}
    for (i=0;i<=59;i++){
	 sprintf(str,"%02d",i);
	 SendDlgItemMessage(hDlg,BOX_TIME_SECO,CB_ADDSTRING,0,(LPARAM)str);
     	}
	
}

void InitConfTime(HWND hDlg)
{

//得到当前时间    
    SendMessage(GetDlgItem(hDlg,BOX_TIME_YEAR),CB_SETCURSEL,(WPARAM)(year-2000),0);
    SendMessage(GetDlgItem(hDlg,BOX_TIME_MONT),CB_SETCURSEL,(WPARAM)(mont),0);
    SendMessage(GetDlgItem(hDlg,BOX_TIME_DAYS),CB_SETCURSEL,(WPARAM)(days),0);
    SendMessage(GetDlgItem(hDlg,BOX_TIME_HOUR),CB_SETCURSEL,(WPARAM)(hour),0);
    SendMessage(GetDlgItem(hDlg,BOX_TIME_MINU),CB_SETCURSEL,(WPARAM)(minu),0);
    SendMessage(GetDlgItem(hDlg,BOX_TIME_SECO),CB_SETCURSEL,(WPARAM)(seco),0);

	
}

void SetCurrentTime(HWND hDlg)
{
	struct timeval tv;
	struct timezone tz;
		int seco,min,hour,mday,mon,year;
		int p[6];// 控件值 返回值,1表示成功,0表示失败
    		time_t   t;   
              struct     tm   nowtime  ; 

		//nowtime = localtime(&t);	  
     		seco=GetDlgItemInt(hDlg,BOX_TIME_SECO,	&p[0],0);
	 	min=GetDlgItemInt(hDlg,BOX_TIME_MINU,		&p[1],0);
	 	hour=GetDlgItemInt(hDlg,BOX_TIME_HOUR,	&p[2],0);
	 	mday=GetDlgItemInt(hDlg,BOX_TIME_DAYS,	&p[3],0);
	 	mon=GetDlgItemInt(hDlg,BOX_TIME_MONT,	&p[4],0);
	 	year=GetDlgItemInt(hDlg,BOX_TIME_YEAR,	&p[5],0);
             printf("xierongjian= y=%d month=%d day=%d Hour=%d  minute=%d  secon=%d \n", year,mon,mday,hour,min,seco) ;   		
	    	nowtime.tm_sec=seco;/*   Seconds.[0-60]   (1   leap   second)*/                             
             nowtime.tm_min=min;/*   Minutes.[0-59]   */                                       
              nowtime.tm_hour=hour;/*   Hours. [0-23]   */   
              nowtime.tm_mday=mday;/*   Day.[1-31]   */   
              nowtime.tm_mon=mon-1;/*   Month. [0-11]   */   
              nowtime.tm_year=year-1900   ;/*   Year+   1900.*/   
              nowtime.tm_isdst=-1   ;// -1:不关心   1:夏令时间  ,不夏令时候0
             t=mktime(&nowtime);
	      stime(&t);
}	


void FreshCurrentTime(HWND hDlg)
{
		int old_seco,old_min,old_hour,old_mday,old_mon,old_year;
		int p[6];// 控件值 返回值,1表示成功,0表示失败

     		old_seco=GetDlgItemInt(hDlg,BOX_TIME_SECO,	&p[0],2);
	 	old_min=GetDlgItemInt(hDlg,BOX_TIME_MINU,		&p[1],2);
	 	old_hour=GetDlgItemInt(hDlg,BOX_TIME_HOUR,	&p[2],2);
	 	old_mday=GetDlgItemInt(hDlg,BOX_TIME_DAYS,	&p[3],2);
	 	old_mon=GetDlgItemInt(hDlg,BOX_TIME_MONT,	&p[4],2);
	 	old_year=GetDlgItemInt(hDlg,BOX_TIME_YEAR,	&p[5],2);
		if((p[0]+p[1]+p[2]+p[3]+p[4]+p[5])==6)
			{
	    if(seco!=old_seco)  SetDlgItemInt(hDlg,BOX_TIME_SECO, seco,0) ;/*   Seconds.[0-60]   (1   leap   second)*/                             
            if( minu = old_min)  SetDlgItemInt(hDlg,BOX_TIME_MINU, minu,0) ;/*   Minutes.[0-59]   */                                       
            if( old_hour != hour)  SetDlgItemInt(hDlg,BOX_TIME_HOUR, hour,0) ;/*   Hours. [0-23]   */   
             if( old_mday != days)  SetDlgItemInt(hDlg,BOX_TIME_DAYS, days,0) ;/*   Day.[1-31]   */   
             if(old_mon != mont)  SetDlgItemInt(hDlg,BOX_TIME_MONT, mont,0) ;/*   Month. [0-11]   */   
            if(old_year != year)  SetDlgItemInt(hDlg,BOX_TIME_YEAR,year,0)    ;/*   Year-   1900.*/   
		}
	
}
int  TimeDialogProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
   HDC hdc;
 
  int i;//按纽循环用
  static int ctrl_time_id; 
  static int index;//下拉框选中项
  static int num ;//下拉框总选项数目
    static  BOOL flag_entered;
  int id ;
  int nc ;
  unsigned char str_num[10];
	 id= LOWORD (wParam);//控件编号
	 nc=HIWORD(wParam);  //控件通知码	
    switch (message) 
    { 
    	case MSG_CREATE:
			//SetTimer(hDlg,CONF_TIMER_ID,100);	 
			break;
    	case MSG_INITDIALOG:		
			TimeDialogInit(hDlg);
			 InitConfTime(hDlg);
			 SetFocusChild(GetDlgItem(hDlg,BOX_TIME_FORMAT));
			ctrl_time_id=BOX_TIME_FORMAT;
		return 1;
	case MSG_SHOWWINDOW:
			{  				
		      }  		      
		 break;       	        
	case MSG_PAINT:

		hdc=BeginPaint(hDlg);			
		 SetBrushColor(hdc,PIXEL_black);		 
		 	SetPenColor (hdc,COLOR_darkgray);
  		// Rectangle(hdc,180,80,380,160);  		
		//SetBrushColor(hdc,PIXEL_darkgreen);
		//FillBox(hdc,180,80,80,40);
		SelectFont(hdc,songgb16font);
           	SetTextColor(hdc,PIXEL_black);
	      SetBkColor(hdc,PIXEL_lightgray);
           	 TextOut(hdc, 200,100, "日期格式:  年/月/日");
	       TextOut(hdc, 200,130, "样例:   07/01/01");
           	 TextOut(hdc, 200,240, "时间格式: 时:  分:  秒");
	       TextOut(hdc, 200,270, "样例:   08:01:59");

		EndPaint(hDlg,hdc);
		break;
	case MSG_KEYDOWN:
		if(!keydowned)
		{		
              	if(id==KEY_LEFT)SendDlgItemMessage(hDlg, CONF_TIME_LEFT, MSG_LBUTTONDOWN, 0,0);
              	if(id==KEY_RIGHT)SendDlgItemMessage(hDlg, CONF_TIME_RIGHT, MSG_LBUTTONDOWN, 0,0);
              	if(id==KEY_UP)SendDlgItemMessage(hDlg, CONF_TIME_UP, MSG_LBUTTONDOWN, 0,0);
              	if(id==KEY_DOWN)SendDlgItemMessage(hDlg, CONF_TIME_DOWN, MSG_LBUTTONDOWN, 0,0);
              	if(id==KEY_ENTER)SendDlgItemMessage(hDlg, CONF_TIME_ENTER, MSG_LBUTTONDOWN, 0,0);
       		keydowned=1;
		}
	  break;	
	
	 case MSG_KEYUP:
		keydowned=0;	
		if(id==KEY_EXIT)  		EndDialog (hDlg, 0);
		if(id==KEY_LEFT) 	
			{
			SendDlgItemMessage(hDlg, CONF_TIME_LEFT, MSG_LBUTTONUP, 0,0);
              	ctrl_time_id=time_id_left[ctrl_time_id-BOX_TIME_FORMAT];
                   SetFocusChild( GetDlgItem(hDlg,ctrl_time_id));
			}
		if(id==KEY_RIGHT) 
			{
			SendDlgItemMessage(hDlg, CONF_TIME_RIGHT, MSG_LBUTTONUP, 0,0);
     			ctrl_time_id=time_id_right[ctrl_time_id-BOX_TIME_FORMAT];
            		 SetFocusChild( GetDlgItem(hDlg,ctrl_time_id));
			}
		if(id==KEY_UP) 
			{
			SendDlgItemMessage(hDlg, CONF_TIME_UP, MSG_LBUTTONUP, 0,0);
 			if(flag_entered)//按过ENTER后选择BOX里面内容
				{
				 SendDlgItemMessage(hDlg,ctrl_time_id,MSG_KEYDOWN,SCANCODE_PAGEDOWN,0);
				index--;if(index<0)index=num-1;
				SendDlgItemMessage(hDlg,ctrl_time_id,CB_SETCURSEL,index,0);				
				
				}		  
                   else 
                         	{
      				ctrl_time_id=time_id_up[ctrl_time_id-BOX_TIME_FORMAT];
      				SetFocusChild( GetDlgItem(hDlg,ctrl_time_id));
      				}
			}
		if(id==KEY_DOWN) 
			{	
			SendDlgItemMessage(hDlg, CONF_TIME_DOWN, MSG_LBUTTONUP, 0,0);

 			if(flag_entered)//按过ENTER后选择BOX里面内容
     				{
     				 SendDlgItemMessage(hDlg,ctrl_time_id,MSG_KEYDOWN,SCANCODE_PAGEDOWN,0);
				index++;if(index==num)index=0;
				SendDlgItemMessage(hDlg,ctrl_time_id,CB_SETCURSEL,index,0);				
 				}	  
                    else 
                 	    {
          		     ctrl_time_id=time_id_down[ctrl_time_id-BOX_TIME_FORMAT];			
            	 	     SetFocusChild( GetDlgItem(hDlg,ctrl_time_id));				
            	           }
	 		}
		if(id==KEY_ENTER) 
			{	
	 		SendDlgItemMessage(hDlg, CONF_TIME_ENTER, MSG_LBUTTONUP, 0,0);
        			 if(flag_entered) 
         			{
         			//设定时间
         			SetCurrentTime(hDlg);
       			flag_entered=0;
       			SetFocusChild( GetDlgItem(hDlg,ctrl_time_id));
        			}
       			 else
                     	{
                     	 SendDlgItemMessage(hDlg,ctrl_time_id,MSG_KEYDOWN,SCANCODE_PAGEDOWN,0);
                     	flag_entered=1;
         			index=SendDlgItemMessage(hDlg,ctrl_time_id,CB_GETCURSEL,0,0);
			       num=SendDlgItemMessage(hDlg,ctrl_time_id,CB_GETCOUNT,0,0);
                     	}

	 	 	}
		break;   	
	case MSG_COMMAND:
       {
	 
	 if(id==CONF_TIME_APPLY)    
	 	{
	 	  SetCurrentTime(hDlg);
	 	}
	 if(id==CONF_TIME_CANCEL) FreshCurrentTime(hDlg);
	 
	 if(id==CONF_TIME_BACK)     EndDialog (hDlg, 0);
	 
	}
	break;
	
	case MSG_CLOSE:
	
		 EndDialog (hDlg, 0);
		break;
    	}
   	 return DefaultDialogProc (hDlg, message, wParam, lParam);
}

  //创建math 对话框
void DlgConfTime (HWND hWnd)
{

    DlgSetTime.controls = ctrl_conf_time;
    
    DialogBoxIndirectParam (&DlgSetTime, hWnd, TimeDialogProc, 0L);
}
 



⌨️ 快捷键说明

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