www.pudn.com > sharewareluncher.zip > TAB.C
#include// 基本Windows编程接口的头文件 #include // 公共控件头文件 #include // 包含属性表控件的函数和常量说明的头文件 //#include //#include #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 =10) { nTimerNum=10; break; } for(i=0;i 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); else CheckDlgButton(hWnd,IDC_EVERYDAY,BST_UNCHECKED); nOldSel=i; bInSel=FALSE; break; } break; case WM_CLOSE: SortList1(); WriteTimerInfo(); btRuning=FALSE; bSheet=FALSE; EndDialog(hWnd,TRUE); return TRUE; case WM_NOTIFY: switch (((NMHDR FAR *) lParam)->code) { case PSN_SETACTIVE: btRuning=TRUE; break; case PSN_APPLY: if(nOldSel==-2) { bSheet=FALSE; break; } //GetDlgItemText(hWnd,IDC_ALARMINFO,ti[nOldSel].szInfo,500); switch(IsDlgButtonChecked(hWnd,IDC_ONEHOUR)) { case BST_CHECKED: nAlarmEveryHour=1; break; case BST_UNCHECKED: nAlarmEveryHour=0; break; } RegAlarm(); SortList1(); WriteTimerInfo(); btRuning=FALSE; bSheet=FALSE; SetWindowLong(hMainWnd, GWL_STYLE, GetWindowLong(hMainWnd,GWL_STYLE)); ShowWindow(hMainWnd, SW_SHOW); SetWindowLong(hWnd,DWL_MSGRESULT, FALSE); return TRUE; case PSN_KILLACTIVE: //btRuning=FALSE; SetWindowLong(hWnd,DWL_MSGRESULT, FALSE); return (TRUE); case PSN_RESET: btRuning=FALSE; bSheet=FALSE; break; case PSN_HELP: break; } default: return FALSE; } return FALSE; } void TimeToString(void) { int i; for(i=0;i 23) a=0; b=GetDlgItemInt(hWnd,IDC_SETMIN,NULL,FALSE); if(b<0 || b>59) b=0; TtoS(a,b,j); { int x; BOOL bf=FALSE; for(x=0;x