📄 win_sysdatetime.c~
字号:
/*win_sysDateTime.c*//*** COMPANY NAME: 国星** FILE NAME: win_sysDateTime.c** FILE PATH: Interface/win_sysDateTime.c** WINDOWS NAME: 日期时间** WINDOWS PATH: 系统 / 系统查看 / 日期时间** OTHER INFORMATION; 无** CREATER NAME: JiangYuanqing** MENDER NAME: LiWencheng** CHANGE TIME: 11/4/2007 */#include "sysSrcInfo.h"#ifdef _EXT_SKIN#define SIID_TIMER 0#define SIID_ADJUSTTIME 2#define ID_TIME 100 #define ID_EDIT_DISP 101#define ID_EDIT_YEAR 102#define ID_EDIT_MONTH 103#define ID_EDIT_DAY 104#define ID_EDIT_HOUR 105#define ID_EDIT_MINUTE 106#define ID_EDIT_SECOND 107BOOL TimeSetted;static BITMAP bmp_locate;static HWND hWndMainDateTime; extern HWND hIconView_Index;extern HWND winIndex;static const char *bmp_name_Datetime[] ={ "./Pictures/b_windowsbackground_1.PNG", "./Pictures/OK.PNG", "./Pictures/menu.PNG", "./Pictures/return.PNG", };//static si_bmplabel_t timer = { "00:00:00", "0123456789:-" };/* 定义皮肤元素数组 */static skin_item_t skin_main_items [] ={ {SIID_OK, SI_TYPE_CHKBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE, BUTTONLEFT_X, BUTTON_Y, {}, 1 ,"" }, {SIID_ADJUSTTIME, SI_TYPE_CHKBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE, BUTTONCENTER_X,BUTTON_Y, {}, 2, "" }, {SIID_RETURN, SI_TYPE_CHKBUTTON | SI_TEST_SHAPE_RECT | SI_STATUS_VISIBLE, BUTTONRIGHT_X, BUTTON_Y, {}, 3, "" }};/* 定义皮肤 */static skin_head_t skin_datetime ={ "main", //const BITMAP* bmps; SKIN_STYLE_TOOLTIP, NULL, NULL, 0, 3, skin_main_items, FALSE /** The number of the items in this skin. */ /* 定义皮肤元素数组 */};static int ToInt(char input[]){ int intValue=0,length; char *p=input; length=strlen(input); for(; p <(input+length); p++ ) { if( (*p <'0') || *p >'9') { intValue=-1; break; } else intValue=(*p -'0') +intValue*10; } return intValue;}/* 皮肤事件回调函数 */static int main_event_cb_DateTime (HWND hwnd, skin_item_t* item, int event, void* data){ static int click_num = 0; char buff[10] ={0}; char setYear[5] ={0}; char setMon[3] ={0}; char setDay[3] ={0}; char setHour[3] ={0}; char setMin[3] ={0}; char setSec[3] ={0}; Time set_time; if (event == SIE_BUTTON_CLICKED) { switch (item->id) { case SIID_OK: //set current time by user's order GetWindowText(GetDlgItem(hwnd,ID_EDIT_YEAR) ,setYear,4); GetWindowText(GetDlgItem(hwnd,ID_EDIT_MONTH),setMon ,2); GetWindowText(GetDlgItem(hwnd,ID_EDIT_DAY) ,setDay ,2); GetWindowText(GetDlgItem(hwnd,ID_EDIT_HOUR) ,setHour,2); GetWindowText(GetDlgItem(hwnd,ID_EDIT_MINUTE),setMin,2); GetWindowText(GetDlgItem(hwnd,ID_EDIT_SECOND),setSec,2); //转换char型为int型 set_time.year=ToInt(setYear); currTime.year=set_time.year-1900; set_time.mon=ToInt(setMon); currTime.mon= set_time.mon-1; set_time.mday=ToInt(setDay); currTime.mday=set_time.mday; set_time.hour=ToInt(setHour); currTime.hour=set_time.hour; set_time.min=ToInt(setMin); currTime.min=set_time.min; set_time.sec=ToInt(setSec); currTime.sec=set_time.sec; if((set_time.year < 0) || set_time.year > 9999) { MessageBox(hwnd,"set year error","error",MB_OK); break; } if((set_time.mon < 0) || set_time.mon > 11) { sprintf(buff,"%d",set_time.mday); MessageBox(hwnd,buff,"error",MB_OK); break; } if((set_time.mday < 1) || set_time.mday > 31) { MessageBox(hwnd,"set day error","error",MB_OK); break; } if((set_time.hour < 0) || set_time.hour > 24) { MessageBox(hwnd,"set hour error","error",MB_OK); break; } if((set_time.min < 0) || set_time.min > 59) { MessageBox(hwnd,"set minute error","error",MB_OK); break; } if((set_time.sec < 0) || set_time.sec > 59) { MessageBox(hwnd,"set second error","error",MB_OK); break; } SetSysTime(&currTime); //刷新EDIT_DISP显示 sprintf(buff,"%04d-%02d-%02d %02d:%02d:%02d",set_time.year,set_time.mon,set_time.mday, set_time.hour, set_time.min,set_time.sec); SetWindowText (GetDlgItem (hwnd, ID_EDIT_DISP), buff); TimeSetted=TRUE; //在用户设置了时间后让标记TimeSetting为true,winServ后台服务轮询TimeSetted true后刷新任务栏时间显示 //Do something in the future break; case SIID_RETURN: DestroyAllControls ( hWndMainDateTime ); ShowWindow ( hWndMainDateTime, SW_HIDE); MainWindowCleanup (hWndMainDateTime); skin_deinit (&skin_datetime); /* 撤销皮肤 */ LoadSkinBmps ( &skin_datetime, FALSE, bmp_name_Datetime ,4 ); /* 卸载位图资源 */ MiniGUIExtCleanUp (); SendMessage (hWndMainDateTime, MSG_CLOSE, 0, 0); UnloadBitmap( &bmp_locate); win_SysLook( hWndMain ); break; break; } } return 1;}/* 皮肤窗口消息回调函数 */static int msg_event_cb (HWND hwnd, int message, WPARAM wparam, LPARAM lparam, int* result){ HDC hdc; gal_pixel pixel; char buf[25]; char setYear[5] ={0}; char setMon[3] ={0}; char setDay[3] ={0}; char setHour[3] ={0}; char setMin[3] ={0}; char setSec[3] ={0}; skin_head_t *hostskin = NULL; HWND child; switch (message) { case MSG_CREATE: LoadBitmap (HDC_SCREEN, &bmp_locate, "Pictures/a_SysLook_5.PNG"); GetSysTime( &initTime ); currTime=InitDispTime( &initTime ); //创建皮肤窗体同时获取系统时间以初始化时间显示 DispTimeNum( hwnd,SIID_TIMER,&currTime); /*****************加载static控件*************************/ child= CreateWindow( "static", "当前时间", //WS_CHILD | WS_VISIBLE |SS_WHITERECT, WS_VISIBLE | SS_SIMPLE, IDC_STATIC, 2, 18, 80, 15, hwnd, 0); //修改 static控件背景色 gal_pixel pixel = RGB2Pixel (HDC_SCREEN, 0xFF, 0xFF, 0xFF); SetWindowBkColor (child, pixel); InvalidateRect (child, NULL, TRUE); child= CreateWindow ( "static", "系统时间设置", //WS_CHILD | WS_VISIBLE | SS_CENTER |SS_WHITERECT, WS_VISIBLE | SS_SIMPLE, IDC_STATIC, 2, 55, 80, 15, hwnd, 0); SetWindowBkColor (child, pixel); InvalidateRect (child, NULL, TRUE); child= CreateWindow ( "static", "年 月 日", WS_VISIBLE | SS_SIMPLE, IDC_STATIC, 2, 75, 160, 15, hwnd, 0); SetWindowBkColor (child, pixel); InvalidateRect (child, NULL, TRUE); child= CreateWindow ( "static", "时 分 秒", WS_VISIBLE | SS_SIMPLE, IDC_STATIC, 2, 115, 160, 15, hwnd, 0); SetWindowBkColor (child, pixel); InvalidateRect (child, NULL, TRUE); /**************创建编辑框控件范例***********************/ CreateWindow( CTRL_SLEDIT, "", WS_CHILD | WS_VISIBLE | WS_BORDER ,//|ES_READONLY, ID_EDIT_DISP, 0, 35, 160, 15, hwnd, 0); sprintf(buf,"%04d-%02d-%02d %02d:%02d:%02d",currTime.year,currTime.mon,currTime.mday, currTime.hour, currTime.min,currTime.sec); //初始化edit控件时间显示 SetWindowText (GetDlgItem (hwnd, ID_EDIT_DISP), buf); SetTimer (hwnd,ID_TIME,100);//起动一个间隔为1秒的定时器标识号为ID_TIME,接收定时器消息的窗口为hWnd CreateWindow( CTRL_SLEDIT, //editControl for setting year "", WS_CHILD | WS_VISIBLE | WS_BORDER, ID_EDIT_YEAR, 0, 95, 50, 15, hwnd, 0); DispSetTime( hwnd,ID_EDIT_YEAR,currTime.year,TRUE); CreateWindow( CTRL_SLEDIT, //setting month "", WS_CHILD | WS_VISIBLE | WS_BORDER, ID_EDIT_MONTH, 55, 95, 50, 15, hwnd, 0); DispSetTime( hwnd,ID_EDIT_MONTH,currTime.mon,FALSE); CreateWindow( CTRL_SLEDIT, //setting day "", WS_CHILD | WS_VISIBLE | WS_BORDER, ID_EDIT_DAY, 110, 95, 50, 15, hwnd, 0); DispSetTime( hwnd,ID_EDIT_DAY,currTime.mday,FALSE); CreateWindow( CTRL_SLEDIT, //setting hour "", WS_CHILD | WS_VISIBLE | WS_BORDER, ID_EDIT_HOUR, 0, 135, 50, 15, hwnd, 0); DispSetTime( hwnd,ID_EDIT_HOUR,currTime.hour,FALSE); CreateWindow( CTRL_SLEDIT, //setting minute "", WS_CHILD | WS_VISIBLE | WS_BORDER, ID_EDIT_MINUTE, 55, 135, 50, 15, hwnd, 0); DispSetTime( hwnd,ID_EDIT_MINUTE,currTime.min,FALSE); CreateWindow( CTRL_SLEDIT, //setting second "", WS_CHILD | WS_VISIBLE | WS_BORDER, ID_EDIT_SECOND, 110, 135, 50, 15, hwnd, 0); DispSetTime( hwnd,ID_EDIT_SECOND,currTime.sec,FALSE); /*设置各个edit控件中可编辑文本上限 */ // SendMessage(GetDlgItem(hwnd,ID_EDIT_YEAR),EM_LIMITTEXT,4,0L); // SendMessage(GetDlgItem(hwnd,ID_EDIT_MONTH),EM_LIMITTEXT,2,0L); // SendMessage(GetDlgItem(hwnd,ID_EDIT_DAY),EM_LIMITTEXT,2,0L); // SendMessage(GetDlgItem(hwnd,ID_EDIT_HOUR),EM_LIMITTEXT,2,0L); // SendMessage(GetDlgItem(hwnd,ID_EDIT_MINUTE),EM_LIMITTEXT,2,0L); // SendMessage(GetDlgItem(hwnd,ID_EDIT_SECOND),EM_LIMITTEXT,2,0L); break; /**********************************************************/ case MSG_TIMER: //同步刷新edit控件时间显示 sprintf(buf,"%04d-%02d-%02d %02d:%02d:%02d",currTime.year,currTime.mon,currTime.mday, currTime.hour, currTime.min,currTime.sec); SetWindowText (GetDlgItem (hwnd, ID_EDIT_DISP), buf);/* DispSetTime( hwnd,ID_EDIT_YEAR,currTime.year,TRUE); DispSetTime( hwnd,ID_EDIT_YEAR,currTime.year,TRUE); DispSetTime( hwnd,ID_EDIT_YEAR,currTime.year,TRUE); DispSetTime( hwnd,ID_EDIT_HOUR,currTime.hour,FALSE); DispSetTime( hwnd,ID_EDIT_MINUTE,currTime.min,FALSE); DispSetTime( hwnd,ID_EDIT_SECOND,currTime.sec,FALSE); */ /* sprintf(setYear,"%04d",currTime.year); SetWindowText (GetDlgItem (hwnd, ID_EDIT_DISP), setYear); sprintf(setMon,"%02d",currTime.mon); SetWindowText (GetDlgItem (hwnd, ID_EDIT_DISP), setMon); sprintf(setDay,"%02d",currTime.mday); SetWindowText (GetDlgItem (hwnd, ID_EDIT_DISP), setDay; sprintf(setHour,"%02d",currTime.hour); SetWindowText (GetDlgItem (hwnd, ID_EDIT_DISP), setHour); sprintf(setMin,"%02d",currTime.min); SetWindowText (GetDlgItem (hwnd, ID_EDIT_DISP), setMin); sprintf(setSec,"%02d",currTime.sec); SetWindowText (GetDlgItem (hwnd, ID_EDIT_DISP), setSec);*/ break; case MSG_PAINT: hdc=BeginPaint (hwnd); //FillBoxWithBitmap (hdc, 0,0, 160, 17, &bmp_locate); FillBoxWithBitmap (hdc, ZTL_PIC_X,ZTL_PIC_Y, ZTL_PIC_W,ZTL_PIC_H, &bmp_locate); SetBkMode (hdc, BM_TRANSPARENT); TextOut (hdc, WZ_ZTL_X4, WZ_ZTL_Y, "日期时间" ); EndPaint (hwnd,hdc); break; case MSG_CLOSE: KillTimer(hwnd,ID_TIME); break; } return 1;}void Win_DateTime( HWND hwnd ){ MSG msg; #ifdef _MGRM_PROCESSES JoinLayer(NAME_DEF_LAYER , "skindemo" , 0 , 0);#endif if (!InitMiniGUIExt()) { printf("Error!"); } LoadSkinBmps (&skin_datetime, TRUE, bmp_name_Datetime, 4); /* 装载位图资源 */ if (skin_datetime.bmps == NULL) { printf ("Could not load skin bitmaps!\n"); } if ( !skin_init (&skin_datetime, main_event_cb_DateTime, msg_event_cb) ){ /* 初始化皮肤 */ printf ("skin init fail!\n"); } else{ hWndMainDateTime = create_skin_control (&skin_datetime, hwnd,1432,DEF_X_, DEF_Y_, DEF_WIDTH, DEF_HEIGHT); currShowWindowHwnd = &hWndMainDateTime;} }#ifndef _LITE_VERSION#include <minigui/dti.c>#endif#else#error "Lack of SKIN support in MiniGUIExt library."#endif /* _EXT_SKIN */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -