📄 alarm.c
字号:
#include "alarm.h"
#include "../../mybuttonreg.h"
static BITMAP edit_pushed;
static BITMAP edit_unpushed;
static BITMAP edit_mousemove;
static BITMAP return_pushed;
static BITMAP return_unpushed;
static BITMAP return_mousemove;
static HWND hMainWnd;
static HWND hCtrl_edit;
static HWND hCtrl_return;
static void emLoadBitmap()
{
LoadBitmap (HDC_SCREEN, &edit_pushed, "image/button/tool_edit_pushed.jpg");
LoadBitmap (HDC_SCREEN, &edit_unpushed, "image/button/tool_edit_unpushed.jpg");
LoadBitmap (HDC_SCREEN, &edit_mousemove, "image/button/tool_edit_mousemove.jpg");
LoadBitmap (HDC_SCREEN, &return_pushed, "image/button/tool_return_pushed.jpg");
LoadBitmap (HDC_SCREEN, &return_unpushed, "image/button/tool_return_unpushed.jpg");
LoadBitmap (HDC_SCREEN, &return_mousemove, "image/button/tool_return_mousemove.jpg");
}
static void emUnLoadBitmap()
{
UnloadBitmap (&edit_pushed);
UnloadBitmap (&edit_unpushed);
UnloadBitmap (&edit_mousemove);
UnloadBitmap (&return_pushed);
UnloadBitmap (&return_unpushed);
UnloadBitmap (&return_mousemove);
}
static void Alarm_notify_proc (HWND hwnd, int id, int nc, DWORD add_data)
{
if ( hwnd == hCtrl_edit&& nc == MYBUTTON_PUSHED)
{
//SetWindowAdditionalData(hwnd, (DWORD)&edit_pushed);
}
if ( hwnd == hCtrl_edit && nc == BN_CLICKED&&id==IDM_EDIT)
{
//SetWindowAdditionalData(hwnd, (DWORD)&edit_unpushed);
SendNotifyMessage(hMainWnd,IDM_EDIT,0,0);
}
if( hwnd == hCtrl_edit && nc == MYBUTTON_MOUSEMOVE)
{
//SetWindowAdditionalData(hwnd, (DWORD)&edit_mousemove);
}
//-----------------------------------------------------------
if ( hwnd == hCtrl_return&& nc == MYBUTTON_PUSHED)
{
//SetWindowAdditionalData(hwnd, (DWORD)&return_pushed);
}
if ( hwnd == hCtrl_return && nc == BN_CLICKED&&id==IDM_RETURN)
{
//SetWindowAdditionalData(hwnd, (DWORD)&return_unpushed);
SendNotifyMessage(hMainWnd,MSG_CLOSE,0,0);
}
if( hwnd == hCtrl_return && nc == MYBUTTON_MOUSEMOVE)
{
//SetWindowAdditionalData(hwnd, (DWORD)&return_mousemove );
}
//-----------------------------------------------------------
InvalidateRect (hwnd, NULL, TRUE);
//--------------------------------------------------------------
}
static void list_proc (HWND hwnd, int id, int nc, DWORD add_data)
{
int index;
if (id == IDM_LIST&& nc == LBN_SELCHANGE)
{
index= SendMessage (hwnd, LB_GETCURSEL, 0, 0) ;
SendMessage (hwnd, LB_GETTEXT, index, (LPARAM)list) ;
}
}
static void parse(char *list)//将闹铃信息分解成标识和时间
{
int i=0;
if(list[1] == 'n')
strcpy(list_flag,"1");
else strcpy(list_flag,"0");
while(list[i]<'0'||list[i]>'9') i++;
list_hour[0]=list[i];
list_hour[1]=list[i+1];
i+=3;
list_minute[0]=list[i];
list_minute[1]=list[i+1];
i+=3;
list_second[0]=list[i];
list_second[1]=list[i+1];
}
void initFile(HWND hwnd,int id)
{
FILE *fp;
int i=0;
char alarm[30];
Clock clo[5];
if((fp=fopen("data/clock.dat","w+"))==NULL)
{
printf("open file error\n");
exit(1);
}
for(i=0;i<5;i++)
{ clo[i].flag = alarmflag;
clo[i].hour = 0;
clo[i].minute = 0;
clo[i].second = 0;
if (fwrite(&clo[i],sizeof(Clock),1,fp)!=1)
{printf("write to file error!\n");
exit(1);
}
sprintf(alarm,"off %02d:%02d:%02d",clo[i].flag,clo[i].hour,clo[i].minute,clo[i].second);
SetTextColor(GetClientDC(GetDlgItem(hwnd,IDM_LIST)), COLOR_red);
SendDlgItemMessage (hwnd, id, LB_ADDSTRING, 0, (LPARAM)alarm);
}
fclose(fp);
}
static int print(HWND hwnd,int id)
{
FILE *fp;
char alarm[30];
int i=0,j=0;
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++;
for(j=0;j<i;j++)
{
if(clo[j].flag == 1)
sprintf(alarm,"on %02d:%02d:%02d",clo[j].hour,clo[j].minute,clo[j].second);
else
sprintf(alarm,"off %02d:%02d:%02d",clo[j].hour,clo[j].minute,clo[j].second);
SendDlgItemMessage (hwnd, id, LB_INSERTSTRING, j, (LPARAM)alarm);
}
fclose(fp);
}
static void createClock(HWND hwnd)
{
CreateWindowEx(CTRL_LISTBOX, NULL,WS_VISIBLE | WS_BORDER|LBS_NOTIFY ,WS_EX_TRANSPARENT,IDM_LIST,28, 28, 258, 118, hwnd, 0);
//hCtrl_edit= CreateWindowEx(CTRL_MYBUTTON, "编辑",WS_VISIBLE | WS_CHILD, WS_EX_TRANSPARENT,IDM_EDIT,40, 155, 65, 30,hwnd,(DWORD)&edit_unpushed);
hCtrl_edit =CreateWindow ("button",
"编辑",
WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
IDM_EDIT,40, 155, 65, 30,hwnd,0);
//hCtrl_return= CreateWindowEx(CTRL_MYBUTTON, "返回",WS_VISIBLE | WS_CHILD, WS_EX_TRANSPARENT,IDM_RETURN,200, 155, 65, 30,hwnd,(DWORD)&return_unpushed);
hCtrl_return =CreateWindow ("button",
"返回",
WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
IDM_RETURN,200, 155, 65, 30,hwnd,0);
SetNotificationCallback ( hCtrl_edit, Alarm_notify_proc);
SetNotificationCallback ( hCtrl_return, Alarm_notify_proc );
}
static int ClockProc (HWND hwnd, int message, WPARAM wParam, LPARAM lParam)
{
HWND hlist;
struct tm* ptime;
time_t now;
int real_hour;
char buf[100];
pthread_t th_musicplay;
int j;
switch (message)
{
case MSG_CREATE:
//emLoadBitmap();
UPDATE = 0;
createClock(hwnd);
SetNotificationCallback (GetDlgItem (hwnd, IDM_LIST), list_proc);
print(hwnd,IDM_LIST);
return 0;
case MSG_MOUSEMOVE:
SetWindowAdditionalData( hCtrl_edit, (DWORD)&edit_unpushed );
InvalidateRect (hCtrl_edit, NULL, TRUE);
SetWindowAdditionalData( hCtrl_return, (DWORD)&return_unpushed );
InvalidateRect (hCtrl_return, NULL, TRUE);
break;
case IDM_EDIT:
parse(list);
clockset(hwnd);
SendDlgItemMessage (hwnd, IDM_LIST, LB_RESETCONTENT, 0, (LPARAM)0);
print(hwnd,IDM_LIST);
break;
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_bkclock);
if (fGetDC)
ReleaseDC (hdc);
return 0;
}
case MSG_CLOSE:
//emUnLoadBitmap();
DestroyMainWindow (hwnd);
PostQuitMessage (hwnd);
UnloadBitmap (&bmp_bkclock);
return 1;
}
return DefaultMainWinProc(hwnd, message, wParam, lParam);
}
int alarm(HWND hwnd)
{
MSG Msg;
MAINWINCREATE CreateInfo;
if( LoadBitmap(HDC_SCREEN,&bmp_bkclock,"./image/background/bkgnd29.jpg"))
return 1;
RegisterMyButtonControl ();
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 = ClockProc;
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);
RegisterMyButtonControl ();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -