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

📄 tab.c

📁 执行和去除共享软件日期限制的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -