📄 tab.c
字号:
#include <user\dlg.h> // 基本Windows编程接口的头文件
#include <commctrl.h> // 公共控件头文件
#include <prsht.h> // 包含属性表控件的函数和常量说明的头文件
//#include <stdio.h>
//#include <string.h>
#include "sharewareluncher.h"
#include "Tab.h"
#include "resource.h"
#define EVERYDAY 1
#define SUPER 2
#define E_SUPER 3
int nTimerNum;
void TimeToString(void);
void SortList1(void);
void TtoS(int a,int b,int c);
void RegAlarm(void);
void DoTimerChange(HWND);
extern HINSTANCE hInst;
extern HWND hMainWnd;
extern BOOL bDlgRuned;
PROPSHEETPAGE * ps;
BOOL bSheet=FALSE;
int nBarPos[]={212,270,-1};
extern TIMERINFO ti[10];
TIMERINFO titemp;
LPSTR szflag[4]={"临时","每日提示","高级","高级"};
//TIMEFLAG tiflag;
HWND hListWnd,hBarWnd,hHUDWnd,hMUDWnd;
char szerr[1100];
int nOldSel=-2;
BOOL bInScroll=FALSE,bInSel=FALSE;
BOOL bTextChanged=FALSE,bHourChanged=FALSE,bMinChanged=FALSE;
extern int nAlarmEveryHour;
BOOL btRuning=FALSE,bNoShowDel=FALSE;
HWND hSheetWnd,hTimelistWnd;
TAB psp[2];
TABFLAG psh;
int CreatePropertySheet(HWND hwndOwner)
{
//PROPSHEETPAGE psp[2];
//PROPSHEETHEADER psh;
bSheet=TRUE;
psp[0].dwSize = sizeof (PROPSHEETPAGE);
psp[0].dwFlags = PSP_USETITLE;
psp[0].hInstance = hInst;
psp[0].pszTemplate = MAKEINTRESOURCE(IDD_TIME);
psp[0].pszIcon = NULL;
psp[0].pfnDlgProc = (DLGPROC)MakeTime;
psp[0].pszTitle = "闹钟设置";
psp[0].lParam = 0;
psp[1].dwSize = sizeof (PROPSHEETPAGE);
psp[1].dwFlags = PSP_USETITLE | PSP_USEHICON;
psp[1].hInstance = hInst;
psp[1].pszTemplate = MAKEINTRESOURCE(IDD_LIST);
psp[1].hIcon = NULL;
psp[1].pfnDlgProc = (DLGPROC)ListWndProc;
psp[1].pszTitle = "程序设置";
psp[1].lParam = 0;
psh.dwSize = sizeof (PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_USEICONID | PSH_HASHELP;
psh.hwndParent = hwndOwner;
psh.hInstance = hInst;
psh.pszIcon = MAKEINTRESOURCE(IDI_APPICON);
psh.pszCaption = (LPSTR) "设置";
psh.nPages = sizeof (psp) / sizeof (PROPSHEETPAGE);
psh.ppsp = (LPCPROPSHEETPAGE) &psp;
//PropertySheet(&psh);
return (PropertySheet((LPCPROPSHEETHEADER)&psh));//hSheetWnd;
}
#pragma argsused
LONG APIENTRY MakeTime(HWND hWnd,UINT message, WPARAM wParam,LPARAM lParam)
{
int i,j;
hTimelistWnd=hWnd;
switch (message)
{
case WM_INITDIALOG:
hSheetWnd=GetParent(hWnd);
bSheet=TRUE;
btRuning=TRUE;
GetTimerInfo(nTimerNum);
TimeToString();
hListWnd=GetDlgItem(hWnd,IDC_LISTTIME);
for (i=0; i < nTimerNum; i++)
{
SendMessage(hListWnd,LB_ADDSTRING,0,(LPARAM)(ti[i].szTimerString));
SendMessage(hListWnd, LB_SETITEMDATA, SendMessage(hListWnd,LB_FINDSTRING,-1,(LPARAM)(ti[i].szTimerString)), (LPARAM) i);
}
if(nTimerNum>0)
{
SendMessage(hListWnd,LB_SETCURSEL,0,0);
SendMessage(hWnd,WM_COMMAND,MAKELONG(IDC_LISTTIME,LBN_SELCHANGE),(LPARAM)hListWnd);
}
if (hListWnd == NULL)
MessageBox (NULL, "加载定时器信息时出错!", "出错", MB_OK );
SetFocus(hListWnd);
hBarWnd=GetDlgItem(hWnd,IDC_TIMEBAR);
SendMessage(hBarWnd,SB_SETPARTS,3,(LPARAM)nBarPos);
SendMessage(hBarWnd,SB_SETTEXT,(1 | 0),(LPARAM)"状态");
//SendMessage(hBarWnd,SB_SETTEXT,(2 | 0),(LPARAM)"01/23/1998");
hHUDWnd=GetDlgItem(hWnd,IDC_HOURUPDOWN);
SendMessage(hHUDWnd,UDM_SETRANGE,0,MAKELONG(23,0));
hMUDWnd=GetDlgItem(hWnd,IDC_MINUPDOWN);
SendMessage(hMUDWnd,UDM_SETRANGE,0,MAKELONG(59,0));
if(nAlarmEveryHour==1)
CheckDlgButton(hWnd,IDC_ONEHOUR,BST_CHECKED);
ps = (PROPSHEETPAGE *)lParam;
return (TRUE);
case WM_VSCROLL:
bInScroll=TRUE;
i=SendMessage(hListWnd,LB_GETCURSEL,0,0);
if(i==LB_ERR)
{
nOldSel=-2;
bInScroll=FALSE;
break;
}
j=SendMessage(hListWnd, LB_GETITEMDATA, i, (LPARAM) 0);
TtoS(GetDlgItemInt(hWnd,IDC_SETHOUR,NULL,FALSE),GetDlgItemInt(hWnd,IDC_SETMIN,NULL,FALSE),j);
{
int x;
BOOL bf=FALSE;
for(x=0;x<nTimerNum;x++)
{
if(x!=j)
if(strcmp(ti[j].szTimerString,ti[x].szTimerString)==0)
{
bf=TRUE;
break;
}
}
if(bf)
{
bInScroll=FALSE;
ti[j]=titemp;
break;
}
SendMessage(hListWnd,LB_DELETESTRING,i,0L);
SendMessage(hListWnd,LB_ADDSTRING,0,(LPARAM)(ti[j].szTimerString));
x=SendMessage(hListWnd,LB_FINDSTRING,-1,(LPARAM)(ti[j].szTimerString));
SendMessage(hListWnd,LB_SETITEMDATA, x, (LPARAM) j);
SendMessage(hListWnd,LB_SETCURSEL,x,0);
nOldSel=x;
}
//SortList1();
//SendMessage(hBarWnd,SB_SETTEXT,(0 | 0),(LPARAM)" ");
//SendMessage(hBarWnd,SB_SETTEXT,(2 | 0),(LPARAM)" ");
bInScroll=FALSE;
break;
case WM_COMMAND:
switch ( LOWORD( wParam ))
{
case IDOK:
if(nTimerNum>=10)
{
nTimerNum=10;
break;
}
for(i=0;i<nTimerNum;i++)
{
if(strcmp(ti[i].szTimerString,"新定时器")==0)
return FALSE;
}
wsprintf(ti[nTimerNum].szTimerString,"新定时器");
SendMessage(hListWnd,LB_ADDSTRING,0,(LPARAM)(ti[nTimerNum].szTimerString));
SendMessage(hListWnd, LB_SETITEMDATA, nTimerNum, (LPARAM) nTimerNum);
SendMessage(hListWnd, LB_SETCURSEL, nTimerNum,0);
SendMessage(hWnd,WM_COMMAND,MAKELONG(IDC_LISTTIME,LBN_SELCHANGE),(LPARAM)hListWnd);
CheckDlgButton(hWnd,IDC_EVERYDAY,BST_UNCHECKED);
//SetDlgItemInt(hWnd,IDC_SETHOUR,0,FALSE);
//SetDlgItemInt(hWnd,IDC_SETMIN,0,FALSE);
nTimerNum++;
break;
case IDHELP://"cancel" pushed
i=SendMessage(hListWnd,LB_GETCURSEL,0,0);
if(i==LB_ERR)
{
nOldSel=-2;
break;
}
j=SendMessage(hListWnd, LB_GETITEMDATA, i, (LPARAM) 0);
SendMessage(hListWnd,LB_DELETESTRING,i,0L);
nTimerNum--;
SortList1();
ListDel1(j);
//if(nTimerNum>0)
//{
// SendMessage(hListWnd,LB_SETCURSEL,0,0L);
// SendMessage(hTimelistWnd,WM_COMMAND,MAKELONG(IDC_LISTTIME,LBN_SELCHANGE),(LPARAM)hListWnd);
//}
//else
{
SendMessage(hBarWnd,SB_SETTEXT,(0 | 0),(LPARAM)" ");
SendMessage(hBarWnd,SB_SETTEXT,(2 | 0),(LPARAM)" ");
SetDlgItemText(hWnd,IDC_ALARMINFO,"\0");
CheckDlgButton(hWnd,IDC_EVERYDAY,BST_UNCHECKED);
SetDlgItemInt(hWnd,IDC_SETHOUR,0,FALSE);
SetDlgItemInt(hWnd,IDC_SETMIN,0,FALSE);
}
break;
case IDCANCEL:
//Errmsg("Will write later");
break;
case IDC_EVERYDAY:
i=SendMessage(hListWnd,LB_GETCURSEL,0,0);
if(i==LB_ERR)
{
nOldSel=-2;
break;
}
j=SendMessage(hListWnd, LB_GETITEMDATA, i, (LPARAM) 0);
switch(IsDlgButtonChecked(hWnd,IDC_EVERYDAY))
{
case BST_CHECKED:
if(ti[j].nflag==SUPER)
ti[j].nflag=E_SUPER;
else
ti[j].nflag=EVERYDAY;
break;
case BST_UNCHECKED:
if(ti[j].nflag==E_SUPER)
ti[j].nflag=SUPER;
else if(ti[j].nflag==EVERYDAY)
ti[j].nflag=0;
break;
}
break;
case IDC_ONEHOUR:
switch(IsDlgButtonChecked(hWnd,IDC_ONEHOUR))
{
case BST_CHECKED:
nAlarmEveryHour=1;
break;
case BST_UNCHECKED:
nAlarmEveryHour=0;
break;
}
RegAlarm();
break;
}
switch(HIWORD(wParam))
{
case EN_KILLFOCUS:
//i=SendMessage((HWND)lParam,LB_GETCURSEL,0,0);
if(!bTextChanged)
break;
if(nOldSel==-2)
break;
j=SendMessage(hListWnd, LB_GETITEMDATA, nOldSel, (LPARAM) 0);
GetDlgItemText(hWnd,IDC_ALARMINFO,ti[j].szInfo,500);
bTextChanged=FALSE;
break;
case EN_CHANGE:
switch((int)LOWORD(wParam))
{
case IDC_ALARMINFO:
bTextChanged=TRUE;
break;
case IDC_SETHOUR:
bHourChanged=TRUE;
break;
case IDC_SETMIN:
bMinChanged=TRUE;
break;
}
break;
case EN_UPDATE:
switch((int)LOWORD(wParam))
{
case IDC_SETHOUR:
if(bInScroll || bInSel)
break;
DoTimerChange(hWnd);
break;
case IDC_SETMIN:
if(bInScroll || bInSel)
break;
DoTimerChange(hWnd);
break;
}
break;
case LBN_SELCHANGE:
if(bInScroll)
break;
bInSel=TRUE;
i=SendMessage((HWND)lParam,LB_GETCURSEL,0,0);
if(i==LB_ERR)
{
SendMessage(hBarWnd,SB_SETTEXT,(0 | 0),(LPARAM)" ");
SendMessage(hBarWnd,SB_SETTEXT,(2 | 0),(LPARAM)" ");
nOldSel=-2;
break;
}
if(nOldSel==-2)
nOldSel=i;
else if(bTextChanged)
{
j=SendMessage((HWND)lParam, LB_GETITEMDATA, nOldSel, (LPARAM) 0);
GetDlgItemText(hWnd,IDC_ALARMINFO,ti[j].szInfo,500);
bTextChanged=FALSE;
}
j=SendMessage((HWND)lParam, LB_GETITEMDATA, i, (LPARAM) 0);
SendMessage(hBarWnd,SB_SETTEXT,(0 | 0),(LPARAM)(szflag[ti[j].nflag]));
SetDlgItemInt(hWnd,IDC_SETHOUR,ti[j].wHour,FALSE);
SetDlgItemInt(hWnd,IDC_SETMIN,ti[j].wMinute,FALSE);
SetDlgItemText(hWnd,IDC_ALARMINFO,ti[j].szInfo);
if(ti[j].nflag==EVERYDAY || ti[j].nflag==E_SUPER)
CheckDlgButton(hWnd,IDC_EVERYDAY,BST_CHECKED);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -