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

📄 alarm.c

📁 minigui PDA系统 可实现手机功能
💻 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 + -