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

📄 alarmset.c

📁 minigui PDA系统 可实现手机功能
💻 C
字号:
#include "alarm.h"

static void createWin(HWND hwnd)
{
 CreateWindow(CTRL_COMBOBOX,list_hour, WS_VISIBLE |  CBS_AUTOSPIN |CBS_AUTOLOOP ,IDC_HOUR,15, 30, 50, 25, hwnd, 0); 
 CreateWindow(CTRL_COMBOBOX,list_minute, WS_VISIBLE |  CBS_AUTOSPIN|CBS_AUTOLOOP,IDC_MINUTE,65, 30, 50, 25, hwnd, 0); 
 CreateWindow(CTRL_COMBOBOX,list_second, WS_VISIBLE |  CBS_AUTOSPIN|CBS_AUTOLOOP,IDC_SECOND,115, 30, 50, 25, hwnd, 0); 
 CreateWindow(CTRL_BUTTON,"开",WS_VISIBLE| BS_DEFPUSHBUTTON | WS_TABSTOP ,IDC_OPEN,200, 30, 40, 30, hwnd, 0); 
 CreateWindow(CTRL_BUTTON,"关",WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP,IDC_CLOSE,200, 80, 40, 30, hwnd, 0); 
 CreateWindow(CTRL_BUTTON,"确定",WS_VISIBLE| BS_DEFPUSHBUTTON | WS_TABSTOP ,IDC_OK,45, 135, 65, 30, hwnd, 0); 
 CreateWindow(CTRL_BUTTON,"取消",WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP,IDC_CANCLE, 200, 135, 65, 30,hwnd, 0); 
 CreateWindow(CTRL_EDIT,"", WS_VISIBLE|WS_BORDER|ES_READONLY,IDC_STATU,60, 65, 40, 25, hwnd,0);
}

static void getTime (HWND hwnd)
{
    get_hour = SendDlgItemMessage(hwnd, IDC_HOUR, CB_GETSPINVALUE, 0, 0);
    get_minute= SendDlgItemMessage(hwnd, IDC_MINUTE, CB_GETSPINVALUE, 0, 0);
    get_second = SendDlgItemMessage(hwnd, IDC_SECOND, CB_GETSPINVALUE, 0, 0);	
	if (get_hour < 0)
            get_hour = 23;
	if (get_hour > 23)
           { get_hour = 0;
	    SendDlgItemMessage (hwnd, IDC_HOUR, CB_SETSPINVALUE, 0, 0); 
	   }
	if (get_minute< 0)
            get_minute = 59;
        if (get_minute > 59)
            {get_minute = 0;
	      SendDlgItemMessage (hwnd, IDC_MINUTE, CB_SETSPINVALUE, 0, 0); 
        }
	if (get_second < 0)
            get_second = 59;
        if (get_second > 59)
           { get_second = 0;
	    SendDlgItemMessage (hwnd, IDC_SECOND, CB_SETSPINVALUE, 0, 0); 
           }
}
static int writeToFile()
{
	FILE *fp;
	int i=0;
	int c=0;//记录个数
	int l_hour;
	int l_minute;
	int l_second;
	if((fp=fopen("data/clock.dat","r+"))==NULL)
	{
		printf("open file error\n");
		exit(1);
	}
	while(!feof(fp))
		if(fread(&clo[i],sizeof(Clock),1,fp)==1)
			{
			i++;
			c++;
			}

	l_hour=atoi(list_hour);
	l_minute=atoi(list_minute);
	l_second=atoi(list_second);
	rewind(fp);
	for(i=0;i<c;i++)
		{	
		if(clo[i].hour == l_hour&&clo[i].minute == l_minute&&clo[i].second ==l_second)
		{
			clo[i].flag = alarmflag;
			clo[i].hour = get_hour;
			clo[i].minute = get_minute;
			clo[i].second = get_second;
			if(fwrite(&clo[i],sizeof(Clock),1,fp)!=1)
			    {printf("write to file error!\n");				
			     exit(1);
			    }
			break;
		}
		if(fwrite(&clo[i],sizeof(Clock),1,fp)!=1)
			{printf("write to file error!\n");				
			exit(1);
			}		
		}	
	fclose(fp);
}

static int ClockSetProc (HWND hwnd, int message, WPARAM wParam, LPARAM lParam)
{
 
    HDC hdc_static;
    switch (message) {
    case MSG_CREATE:
	 createWin(hwnd);
        SendDlgItemMessage(hwnd, IDC_HOUR, CB_SETSPINFORMAT, 0, (LPARAM)"%02d");//设定整数的格式化字符串
        SendDlgItemMessage(hwnd, IDC_HOUR, CB_SETSPINRANGE, 0, 23);//设定最大、最小值
        SendDlgItemMessage(hwnd, IDC_HOUR, CB_SETSPINVALUE, atoi(list_hour), 0);//初始化值
        SendDlgItemMessage(hwnd, IDC_HOUR, CB_SETSPINPACE, 1, 1);//步进值
        
        SendDlgItemMessage(hwnd, IDC_MINUTE, CB_SETSPINFORMAT, 0, (LPARAM)"%02d");
        SendDlgItemMessage(hwnd, IDC_MINUTE, CB_SETSPINRANGE, 0, 59);
        SendDlgItemMessage(hwnd, IDC_MINUTE, CB_SETSPINVALUE, atoi(list_minute), 0);
        SendDlgItemMessage(hwnd, IDC_MINUTE, CB_SETSPINPACE, 1, 10);//上下箭头步进1,上下页增、减10


	 SendDlgItemMessage(hwnd, IDC_SECOND, CB_SETSPINFORMAT, 0, (LPARAM)"%02d");
        SendDlgItemMessage(hwnd, IDC_SECOND, CB_SETSPINRANGE, 0, 59);
        SendDlgItemMessage(hwnd, IDC_SECOND, CB_SETSPINVALUE, atoi(list_second), 0);
        SendDlgItemMessage(hwnd, IDC_SECOND, CB_SETSPINPACE, 1, 30);////上下箭头步进1,上下页增、减30
	if(strcmp(list_flag,"1")==0)
		{alarmflag=1;
		SetWindowText (GetDlgItem (hwnd, IDC_STATU), "on");
		}
	else 
	{
		alarmflag=0;
		SetWindowText (GetDlgItem (hwnd, IDC_STATU), "off");
	}
	return 0;
    case MSG_PAINT:
	hdc_static= BeginPaint (hwnd);
	SetBkMode(hdc_static, BM_TRANSPARENT); 
 	SetTextColor(hdc_static, PIXEL_red);
	TextOut(hdc_static,5, 10,"  时 - 分  - 秒");
	TextOut(hdc_static,0, 65,"  状态");
	EndPaint (hwnd, hdc_static);
	return 0;
    case MSG_COMMAND:
        switch (wParam) {
	case IDC_OPEN:alarmflag=1;
		SetWindowText (GetDlgItem (hwnd, IDC_STATU), "on");
		getTime(hwnd);
		break;
	case IDC_CLOSE:alarmflag=0;
		SetWindowText (GetDlgItem (hwnd, IDC_STATU), "off");
		break;
        case IDC_OK:
		getTime(hwnd);//获取列表框中的时间
		writeToFile();
		UPDATE=1;
		printf("update=%d\n",UPDATE);
        case IDC_CANCLE:
          	DestroyMainWindow (hwnd);
           	PostQuitMessage (hwnd);
           	UnloadBitmap (&bmp_bk);	
            	break;
        }
        return 1;    
    	case MSG_ERASEBKGND://用图片填充背景
	{	
	HDC hdc = (HDC)wParam; 
   	 const RECT* clip = (const RECT*) lParam; 
    	BOOL fGetDC = FALSE; 
   	RECT rcTemp;         
    	if (hdc == 0) { 
        hdc = GetClientDC (hwnd); 
        fGetDC = TRUE; } 
       if (clip) { 
        rcTemp = *clip; 
        ScreenToClient (hwnd, &rcTemp.left, &rcTemp.top); 
        ScreenToClient (hwnd, &rcTemp.right, &rcTemp.bottom); 
        IncludeClipRect (hdc, &rcTemp); }    		 
       FillBoxWithBitmap (hdc, 0, 0, 320, 216, &bmp_bk);  
   	if (fGetDC) 
        ReleaseDC (hdc); 
	return 0;
	} 
    case MSG_CLOSE:
	DestroyMainWindow (hwnd);
        PostQuitMessage (hwnd);    
        UnloadBitmap (&bmp_bk);
	return 1;
    }
    
    return DefaultMainWinProc(hwnd, message, wParam, lParam);
}
int clockset(HWND hwnd)
{
    MSG Msg;
    HWND hMainWnd;
    MAINWINCREATE CreateInfo;
 if( LoadBitmap(HDC_SCREEN,&bmp_bk,"./image/background/bkgnd29.jpg"))
   			return 1;   
    CreateInfo.dwStyle = WS_VISIBLE|WS_CAPTION | WS_BORDER;
    CreateInfo.dwExStyle = WS_EX_NONE;
    CreateInfo.spCaption = "闹钟设定";
    CreateInfo.hMenu = 0;
    CreateInfo.hCursor = GetSystemCursor(0);
    CreateInfo.hIcon = 0;
    CreateInfo.MainWindowProc = ClockSetProc;
    CreateInfo.lx = 0; 
    CreateInfo.ty = 0;
    CreateInfo.rx = 320;
    CreateInfo.by = 216;
    CreateInfo.iBkColor = PIXEL_lightwhite;
    CreateInfo.dwAddData = 0;
    CreateInfo.hHosting = HWND_DESKTOP;
    
    hMainWnd = CreateMainWindow (&CreateInfo);
    if (hMainWnd == HWND_INVALID)
	return -1;

    ShowWindow(hMainWnd, SW_SHOWNORMAL);

    while (GetMessage(&Msg, hMainWnd)) {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }

    MainWindowThreadCleanup (hMainWnd);
    return 0;
}



⌨️ 快捷键说明

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