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

📄 okanswer.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 "../telbook/telbook.h"
#include "../mybuttonreg.h"

#define  IDC_OABUTTON_SAVE    0x1031
#define  IDC_OABUTTON_DELETE  0x1032
#define  IDC_OABUTTON_CANCEL  0x1033
#define  IDC_OABUTTON_RETURN  0x1034
#define  IDC_OALISTBOX        0x1035

static BITMAP bmp_bkgnd;
static BITMAP delall_pushed;
static BITMAP delall_unpushed;
static BITMAP delall_mousemove;
static BITMAP return_pushed;
static BITMAP return_unpushed;
static BITMAP return_mousemove;
static BITMAP save_pushed;
static BITMAP save_unpushed;
static BITMAP save_mousemove;
static BITMAP delete_pushed;
static BITMAP delete_unpushed;
static BITMAP delete_mousemove;

static HWND hCtrl1;
static HWND hCtrl2;
static HWND hCtrl3;
static HWND hCtrl4;

static HWND hOAWnd;



static void notify_proc (HWND hwnd, int id, int nc, DWORD add_data)
{	
	int  i;
	int  index = 0;
	char buf[50];
	FILE *OAfp;
    	
	if ( hwnd == hCtrl1 && nc == MYBUTTON_PUSHED)
	{		
		//SetWindowAdditionalData(hwnd, (DWORD)&save_pushed);
	} 
	if(hwnd == hCtrl2 && nc == MYBUTTON_PUSHED)
		{
			//SetWindowAdditionalData(hwnd, (DWORD)&delete_pushed);
		}
			
	if ( hwnd == hCtrl3 && nc == MYBUTTON_PUSHED)
	{		
		//SetWindowAdditionalData(hwnd, (DWORD)&delall_pushed);
	} 
	if(hwnd == hCtrl4 && nc == MYBUTTON_PUSHED)
		{
			//SetWindowAdditionalData(hwnd, (DWORD)&return_pushed);
		}
	if ( hwnd == hCtrl1 && nc == MYBUTTON_UNPUSHED)
	{
		//SetWindowAdditionalData(hwnd, (DWORD)&save_unpushed);
		
		index = SendMessage (GetDlgItem(hOAWnd, IDC_OALISTBOX), LB_GETCURSEL, 0, 0);
        strcpy(tem_num,CIOA[index].tel_number);
        addItem(hOAWnd);
	} 
	if(hwnd == hCtrl2 && nc == MYBUTTON_UNPUSHED)
	{
		//SetWindowAdditionalData(hwnd, (DWORD)&delete_unpushed);
		
		index = SendMessage (GetDlgItem(hOAWnd, IDC_OALISTBOX), LB_GETCURSEL, 0, 0);
        SendMessage (GetDlgItem(hOAWnd, IDC_OALISTBOX), LB_DELETESTRING, index, 0);
        for(i=index; i<callinfo_len; i++)
        {
			CIOA[i] = CIOA[i+1];
        }
            	  	  
		callinfo_len -= 1;
        if(callinfo_len == 0)
        {
            OAfp = fopen("data/okanswer.txt", "w");
            fclose(OAfp);
        }
        else
        {
            OAfp = fopen("data/okanswer.txt", "w");
            fwrite(CIOA, sizeof(_CALLINFO), callinfo_len, OAfp);
            fclose(OAfp);
        }
			
		}
	if ( hwnd == hCtrl3 && nc == MYBUTTON_UNPUSHED)
	{
		//SetWindowAdditionalData(hwnd, (DWORD)&delall_unpushed);
		
		SendMessage (GetDlgItem(hOAWnd, IDC_OALISTBOX), LB_RESETCONTENT, 0, 0);
        callinfo_len = 0;
        OAfp = fopen("data/okanswer.txt", "w");
        fclose(OAfp);
		
	} 
	if(hwnd == hCtrl4 && nc == MYBUTTON_UNPUSHED)
		{
			//SetWindowAdditionalData(hwnd, (DWORD)&return_unpushed);
			
			SendNotifyMessage(hOAWnd,MSG_CLOSE,0,0);
		}
	
	if( hwnd == hCtrl1 && nc == MYBUTTON_MOUSEMOVE)
	{	
		//SetWindowAdditionalData(hwnd, (DWORD)&save_mousemove);
	} 
	if(hwnd == hCtrl2 && nc == MYBUTTON_MOUSEMOVE)
		{
		
			//SetWindowAdditionalData(hwnd, (DWORD)&delete_mousemove);
		}
	if( hwnd == hCtrl3 && nc == MYBUTTON_MOUSEMOVE)
	{	
	//	SetWindowAdditionalData(hwnd, (DWORD)&delall_mousemove);
	} 
	if(hwnd == hCtrl4 && nc == MYBUTTON_MOUSEMOVE)
		{
			//SetWindowAdditionalData(hwnd, (DWORD)&return_mousemove);
		}
			
			
	InvalidateRect (hwnd, NULL, TRUE);
}



static int OkAnswerProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
	int  i;
	int  index = 0;
    char buf[50];
    FILE *OAfp;
    
    switch (message) 
    {
        case MSG_CREATE:
				/*LoadBitmap (HDC_SCREEN, &save_pushed, "image/button/06.jpg");
        		LoadBitmap (HDC_SCREEN, &save_unpushed, "image/button/08.jpg");
        		LoadBitmap (HDC_SCREEN, &save_mousemove, "image/button/09.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");
        		LoadBitmap (HDC_SCREEN, &delete_pushed, "image/button/16.jpg");
        		LoadBitmap (HDC_SCREEN, &delete_unpushed, "image/button/17.jpg");
        		LoadBitmap (HDC_SCREEN, &delete_mousemove, "image/button/18.jpg");
        		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");
        		*/



hCtrl1 =CreateWindow ("button",
                           "存储",
                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
                          IDC_OABUTTON_SAVE, 
        	               245, 30, 60, 30, 
        	               hWnd,  0);
 
			hCtrl2 =CreateWindow ("button",
                          "删除",
                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
                           IDC_OABUTTON_DELETE, 
        	               245, 66, 60, 30, 
        	               hWnd,  0);
 
			hCtrl3 =CreateWindow ("button",
                          "清空",
                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
                           IDC_OABUTTON_CANCEL, 
        	               245, 104, 60, 30, 
        	               hWnd,  0);

		hCtrl4 =CreateWindow ("button",
                          "返回",
                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
                            IDC_OABUTTON_RETURN, 
        	               245, 140, 60, 30, 
        	               hWnd,  0);


		
		/*	hCtrl1 = CreateWindowEx(CTRL_MYBUTTON,
        	               "存储",WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
        	               WS_EX_TRANSPARENT,
        	               IDC_OABUTTON_SAVE, 
        	               245, 30, 60, 30, 
        	               hWnd, 
        	               (DWORD)&save_unpushed);
        	hCtrl2 = CreateWindowEx(CTRL_MYBUTTON,
        	               "删除",WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE, 
        	               WS_EX_TRANSPARENT, 
        	               IDC_OABUTTON_DELETE, 
        	               245, 66, 60, 30, 
        	               hWnd, 
        	               (DWORD)&delete_unpushed);
        	hCtrl3 = CreateWindowEx(CTRL_MYBUTTON,
        	               "清空",WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE, 
        	               WS_EX_TRANSPARENT, 
        	               IDC_OABUTTON_CANCEL, 
        	               245, 104, 60, 30, 
        	               hWnd, 
        	               (DWORD)&delall_unpushed);
        	hCtrl4 = CreateWindowEx(CTRL_MYBUTTON,
        	               "返回",WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE, 
        	               WS_EX_TRANSPARENT, 
        	               IDC_OABUTTON_RETURN, 
        	               245, 140, 60, 30, 
        	               hWnd, 
        	               (DWORD)&return_unpushed);*/
            CreateWindowEx (CTRL_LISTBOX,
                         "", 
                         WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | WS_VSCROLL, 
                         WS_EX_TRANSPARENT,
                         IDC_OALISTBOX, 
                         10, 20, 225, 160, 
                         hWnd, 
                         0);
            
         /*   SetNotificationCallback (hCtrl1, notify_proc);
			SetNotificationCallback (hCtrl2, notify_proc);
			SetNotificationCallback (hCtrl3, notify_proc);
			SetNotificationCallback (hCtrl4, notify_proc);
                         */
            OAfp = fopen("data/okanswer.txt", "r");
            rewind(OAfp);
            
            while(!feof(OAfp))
            {

                 if(fread(&CIOA[index], sizeof(_CALLINFO), 1, OAfp))
                 {
                     sprintf(buf, "%s %s", CIOA[index].tel_number, CIOA[index].tel_time);
                     SendMessage (GetDlgItem(hWnd, IDC_OALISTBOX), LB_ADDSTRING, index, (LPARAM)buf);	 	  
                     index++;
                 }
            }
            callinfo_len = index;
            fclose(OAfp);                                   	                                  	   
            break;
            
        case MSG_MOUSEMOVE:
				SetWindowAdditionalData(hCtrl1, (DWORD)&save_unpushed);
				SetWindowAdditionalData(hCtrl2, (DWORD)&delete_unpushed);
				SetWindowAdditionalData(hCtrl3, (DWORD)&delall_unpushed);
				SetWindowAdditionalData(hCtrl4, (DWORD)&return_unpushed);
				
				InvalidateRect (hCtrl1, NULL, TRUE);
				InvalidateRect (hCtrl2, NULL, TRUE);
				InvalidateRect (hCtrl3, NULL, TRUE);
				InvalidateRect (hCtrl4, NULL, TRUE);
				break;    
        
        case MSG_COMMAND:
        	  switch(wParam)
            {
            	  case IDC_OABUTTON_SAVE:
            	  	  index = SendMessage (GetDlgItem(hWnd, IDC_OALISTBOX), LB_GETCURSEL, 0, 0);
            	  	  strcpy(tem_num,CIOA[index].tel_number);
            	  	  addItem(hWnd);
            	  	  break;
            	  	  
            	  case IDC_OABUTTON_DELETE:
            	  	index = SendMessage (GetDlgItem(hWnd, IDC_OALISTBOX), LB_GETCURSEL, 0, 0);
            	  	SendMessage (GetDlgItem(hWnd, IDC_OALISTBOX), LB_DELETESTRING, index, 0);
            	  	for(i=index; i<callinfo_len; i++)
            	  	{
            	  	      CIOA[i] = CIOA[i+1];
            	  	}
            	  	  
            	  	callinfo_len -= 1;
                    if(callinfo_len == 0)
                    {
                    		OAfp = fopen("data/okanswer.txt", "w");
                	  	  fclose(OAfp);
                    }
                    else
                    {
                	  	  OAfp = fopen("data/okanswer.txt", "w");
                	  	  fwrite(CIOA, sizeof(_CALLINFO), callinfo_len, OAfp);
                	  	  fclose(OAfp);
            	  	  }
            	  		break; 
            	  		
            	  case IDC_OABUTTON_CANCEL:
            	  	  SendMessage (GetDlgItem(hWnd, IDC_OALISTBOX), LB_RESETCONTENT, 0, 0);
            	  	  callinfo_len = 0;
            	  	  OAfp = fopen("data/okanswer.txt", "w");
            	  	  fclose(OAfp);
            	  	  break;	 
            	  	             	
                case IDC_OABUTTON_RETURN:
                	  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 (&save_pushed);
        		UnloadBitmap (&save_unpushed);
        		UnloadBitmap (&save_mousemove);
        		UnloadBitmap (&delete_pushed);
        		UnloadBitmap (&delete_unpushed);
        		UnloadBitmap (&delete_mousemove);
				UnloadBitmap (&delall_pushed);
        		UnloadBitmap (&delall_unpushed);
        		UnloadBitmap (&delall_mousemove);*/
			
            DestroyMainWindow (hWnd);
            PostQuitMessage (hWnd);
            return 0;
    }

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

int OkAnswerDialog(HWND hWnd)
{
    MSG Msg;
   // HWND hOAWnd;
    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 = OkAnswerProc;
    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 ();
	
    hOAWnd = CreateMainWindow (&CreateInfo);
    
    if (hOAWnd == HWND_INVALID)
        return -1;

    ShowWindow(hOAWnd, SW_SHOWNORMAL);

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

    return 0;
}

⌨️ 快捷键说明

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