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

📄 record.c

📁 minigui PDA系统 可实现手机功能
💻 C
字号:
#include <stdio.h>
#include <string.h>

#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>

#include "call_time.h"
#include "../mybuttonreg.h"

#define  IDC_STATIC_1        0x1061
#define  IDC_STATIC_2        0x1062
#define  IDC_STATIC_3        0x1063
#define  IDC_STATIC_4        0x1064
#define  IDC_SLEDIT_1        0x1065
#define  IDC_SLEDIT_2        0x1066
#define  IDC_SLEDIT_3        0x1067
#define  IDC_SLEDIT_4        0x1068
#define  IDC_RBUTTON_CL      0x1069
#define  IDC_RBUTTON_RT      0x106a

static BITMAP bmp_bkgnd;
static BITMAP return_pushed;
static BITMAP return_unpushed;
static BITMAP return_mousemove;
static BITMAP delall_pushed;
static BITMAP delall_unpushed;
static BITMAP delall_mousemove;

static HWND hCtrl1;
static HWND hCtrl2;

static HWND hRDWnd;

static void notify_proc (HWND hwnd, int id, int nc, DWORD add_data)
{	
	FILE *RDfp;
		
	if ( hwnd == hCtrl1 && nc == MYBUTTON_PUSHED)
	{		
		//SetWindowAdditionalData(hwnd, (DWORD)&delall_pushed);
	} 
	if(hwnd == hCtrl2 && nc == MYBUTTON_PUSHED)
		{
			//SetWindowAdditionalData(hwnd, (DWORD)&return_pushed);
		}
			
	if ( hwnd == hCtrl1 && nc == MYBUTTON_UNPUSHED)
	{
		//SetWindowAdditionalData(hwnd, (DWORD)&delall_unpushed);
		
		SetWindowText (GetDlgItem(hRDWnd, IDC_SLEDIT_1), "00:00:00");
        SetWindowText (GetDlgItem(hRDWnd, IDC_SLEDIT_2), "00:00:00");
        SetWindowText (GetDlgItem(hRDWnd, IDC_SLEDIT_3), "00:00:00");
        SetWindowText (GetDlgItem(hRDWnd, IDC_SLEDIT_4), "00:00:00");
            	  	  
        RD.total_time = 0;
        RD.dial_time = 0;
        RD.ans_time = 0;
        RD.last_time = 0;
            	  	  
        RDfp = fopen("data/record.txt", "w");
        fwrite(&RD, sizeof(_RECORD), 1, RDfp);
        fclose(RDfp);
	} 
	if(hwnd == hCtrl2 && nc == MYBUTTON_UNPUSHED)
		{
		//	SetWindowAdditionalData(hwnd, (DWORD)&return_unpushed);

			SendNotifyMessage(hRDWnd,MSG_CLOSE,0,0);
		}
	
	if( hwnd == hCtrl1 && nc == MYBUTTON_MOUSEMOVE)
	{	
		//SetWindowAdditionalData(hwnd, (DWORD)&delall_mousemove);
	} 
	if(hwnd == hCtrl2 && nc == MYBUTTON_MOUSEMOVE)
		{
			//SetWindowAdditionalData(hwnd, (DWORD)&return_mousemove);
		}
			
	InvalidateRect (hwnd, NULL, TRUE);
}

static int RecordProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
    int hour = 0;
    int minite = 0;
    int second = 0;
    char call_time[10];
    FILE *RDfp;
    
    switch (message) 
    {

                     
        case MSG_CREATE:
			
		/*	LoadBitmap (HDC_SCREEN, &delall_pushed, "image/button/12.jpg");
        	LoadBitmap (HDC_SCREEN, &delall_unpushed, "image/button/10.jpg");
        	LoadBitmap (HDC_SCREEN, &delall_mousemove, "image/button/11.jpg");
			LoadBitmap (HDC_SCREEN, &return_pushed, "image/button/15.jpg");
        	LoadBitmap (HDC_SCREEN, &return_unpushed, "image/button/13.jpg");
        	LoadBitmap (HDC_SCREEN, &return_mousemove, "image/button/14.jpg");
		*/	

		
            CreateWindowEx(CTRL_STATIC,
                         "总通话时长",WS_VISIBLE | SS_SIMPLE, 
                         WS_EX_TRANSPARENT,
                         IDC_STATIC_1, 
                         10, 30, 100, 20, 
                         hWnd, 
                         0);
            CreateWindowEx(CTRL_STATIC,
                         "拨出总时长",WS_VISIBLE | SS_SIMPLE, 
                         WS_EX_TRANSPARENT,
                         IDC_STATIC_2, 
                         10, 60, 100, 20, 
                         hWnd, 
                         0);
            CreateWindowEx(CTRL_STATIC,
                         "接听总时长",WS_VISIBLE | SS_SIMPLE,
                         WS_EX_TRANSPARENT,
                         IDC_STATIC_3, 
                         10, 90, 100, 20, 
                         hWnd, 
                         0); 
            CreateWindowEx(CTRL_STATIC,
                         "上次通话时长",
                         WS_VISIBLE | SS_SIMPLE,
                         WS_EX_TRANSPARENT,
                         IDC_STATIC_4, 
                         10, 120, 100, 20,
                         hWnd,
                         0);
            CreateWindowEx(CTRL_SLEDIT,
                         "",
                         WS_CHILD | WS_VISIBLE | WS_BORDER,
                         WS_EX_TRANSPARENT,
                         IDC_SLEDIT_1,
                         115, 30, 115, 20,
                         hWnd,
                         0);
            CreateWindowEx(CTRL_SLEDIT,
                         "",
                         WS_CHILD | WS_VISIBLE | WS_BORDER,
                         WS_EX_TRANSPARENT,
                         IDC_SLEDIT_2,
                         115, 60, 115, 20,
                         hWnd,
                         0);
            CreateWindowEx(CTRL_SLEDIT,
                         "",
                         WS_CHILD | WS_VISIBLE | WS_BORDER,
                         WS_EX_TRANSPARENT,
                         IDC_SLEDIT_3,
                         115, 90, 115, 20,
                         hWnd,
                         0);
            CreateWindowEx(CTRL_SLEDIT,
                         "",
                         WS_CHILD | WS_VISIBLE | WS_BORDER,
                         WS_EX_TRANSPARENT,
                         IDC_SLEDIT_4,
                         115, 120, 115, 20,
                         hWnd,
                         0);       	                      	                       	                      	                      	                       	                       	
           /*hCtrl1 = CreateWindowEx(CTRL_MYBUTTON,
                         "清零",WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE, 
                         WS_EX_TRANSPARENT,
                         IDC_RBUTTON_CL, 
                         245, 45, 60, 30, 
                         hWnd, 
                         (DWORD)&delall_unpushed);
*/
		hCtrl1 =CreateWindow ("button",
                          "清零",
                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
                          IDC_RBUTTON_CL, 
                         245, 45, 60, 30, 
                         hWnd,  0);
          /* hCtrl2 = CreateWindowEx(CTRL_MYBUTTON,
                         "返回",WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE, 
                         WS_EX_TRANSPARENT,
                         IDC_RBUTTON_RT, 
                         245, 95, 60, 30, 
                         hWnd, 
                         (DWORD)&return_unpushed);   */ 
			hCtrl2=CreateWindow ("button",
                          "返回",
                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
                          IDC_RBUTTON_RT, 
                         245, 95, 60, 30, 
                         hWnd,  0);
			
		/*	SetNotificationCallback (hCtrl1, notify_proc);
			SetNotificationCallback (hCtrl2, notify_proc);
			*/
      	    RDfp = fopen("data/record.txt","r");
          	fread(&RD, sizeof(_RECORD), 1, RDfp);
          	fclose(RDfp);
          	
          	//总通话时间
      	    hour=RD.total_time/3600;
  	        minite=(RD.total_time%3600)/60;
	          second=((RD.total_time%3600)%60);
	          sprintf(call_time,"%02d:%02d:%02d",hour,minite,second);
	          SetWindowText (GetDlgItem(hWnd, IDC_SLEDIT_1), call_time);
	          
          	//拨出总时间
      	    hour=RD.dial_time/3600;
  	        minite=(RD.dial_time%3600)/60;
	          second=((RD.dial_time%3600)%60);
	          sprintf(call_time,"%02d:%02d:%02d",hour,minite,second);
	          SetWindowText (GetDlgItem(hWnd, IDC_SLEDIT_2), call_time);
	          
          	//接听总时间
      	    hour=RD.ans_time/3600;
  	        minite=(RD.ans_time%3600)/60;
	          second=((RD.ans_time%3600)%60);
	          sprintf(call_time,"%02d:%02d:%02d",hour,minite,second);
	          SetWindowText (GetDlgItem(hWnd, IDC_SLEDIT_3), call_time);
	          
          	//上次通话时间
      	    hour=RD.last_time/3600;
  	        minite=(RD.last_time%3600)/60;
	          second=((RD.last_time%3600)%60);
	          sprintf(call_time,"%02d:%02d:%02d",hour,minite,second);
	          SetWindowText (GetDlgItem(hWnd, IDC_SLEDIT_4), call_time);	          	          	                                        	   
            
            break;
            
        case MSG_MOUSEMOVE:
				SetWindowAdditionalData(hCtrl1, (DWORD)&delall_unpushed);
				SetWindowAdditionalData(hCtrl2, (DWORD)&return_unpushed);
				
				InvalidateRect (hCtrl1, NULL, TRUE);
				InvalidateRect (hCtrl2, NULL, TRUE);
				break;    
            
        case MSG_COMMAND:
        	  switch(wParam)
            {
            	  case IDC_RBUTTON_CL:
            	  	  SetWindowText (GetDlgItem(hWnd, IDC_SLEDIT_1), "00:00:00");
            	  	  SetWindowText (GetDlgItem(hWnd, IDC_SLEDIT_2), "00:00:00");
            	  	  SetWindowText (GetDlgItem(hWnd, IDC_SLEDIT_3), "00:00:00");
            	  	  SetWindowText (GetDlgItem(hWnd, IDC_SLEDIT_4), "00:00:00");
            	  	  
            	  	  RD.total_time = 0;
            	      RD.dial_time = 0;
            	  	  RD.ans_time = 0;
            	  	  RD.last_time = 0;
            	  	  
            	  	  RDfp = fopen("data/record.txt", "w");
            	  	  fwrite(&RD, sizeof(_RECORD), 1, RDfp);
            	  	  fclose(RDfp);	  
            	      break;
            	      
                case IDC_RBUTTON_RT:
                	DestroyMainWindow (hWnd);
                    PostQuitMessage (hWnd);
                    break;             	
            }
            return 0;
		
		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, 206, &bmp_bkgnd);

	    		if (fGetDC)
			ReleaseDC (hdc);
	    		return 0;
		}
		
        case MSG_CLOSE:
			/*UnloadBitmap (&bmp_bkgnd);
			UnloadBitmap (&return_pushed);
        	UnloadBitmap (&return_unpushed);
       		UnloadBitmap (&return_mousemove);
			UnloadBitmap (&delall_pushed);
     		UnloadBitmap (&delall_unpushed);
        	UnloadBitmap (&delall_mousemove);*/
			
            DestroyMainWindow (hWnd);
            PostQuitMessage (hWnd);
            return 0;
    }

    return DefaultMainWinProc(hWnd, message, wParam, lParam);
}

int RecordDialog(HWND hWnd)
{
    MSG Msg;
  //  HWND hRDWnd;
    MAINWINCREATE CreateInfo;

    CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
    CreateInfo.dwExStyle = WS_EX_NONE;
    CreateInfo.spCaption = "通话记录";
    CreateInfo.hMenu = 0;
    CreateInfo.hCursor = GetSystemCursor(0);
    CreateInfo.hIcon = 0;
    CreateInfo.MainWindowProc = RecordProc;
    CreateInfo.lx = 0;
    CreateInfo.ty = 0;
    CreateInfo.rx = 320;
    CreateInfo.by = 215;
    CreateInfo.iBkColor = GetWindowElementColor (BKC_CONTROL_DEF);
    CreateInfo.dwAddData = 0;
    CreateInfo.hHosting = hWnd;
    
    if (LoadBitmap (HDC_SCREEN, &bmp_bkgnd, "image/background/bkgnd29.jpg"))
         return -1;
    RegisterMyButtonControl ();
    
    hRDWnd = CreateMainWindow (&CreateInfo);
    
    if (hRDWnd == HWND_INVALID)
        return -1;

    ShowWindow(hRDWnd, SW_SHOWNORMAL);

    while (GetMessage(&Msg, hRDWnd)) {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
	
	UnregisterMyButtonControl ();
    MainWindowThreadCleanup (hRDWnd);

    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -