📄 alarmset.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 + -