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

📄 ringset.c

📁 minigui PDA系统 可实现手机功能
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <pwd.h>
#include <stdarg.h>
#include <errno.h>

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

#include "../mybuttonreg.h"


#define IDC_BUTTON 100
#define IDC_BUTTON2 102
#define IDC_BUTTON3 103
#define IDL_DIR    100
#define IDL_FILE   110
#define IDC_PATH   120

static BITMAP bmp_bkgnd;
/*static BITMAP common_pushed;
static BITMAP common_unpushed;
static BITMAP common_mousemove;
static BITMAP quiet_pushed;
static BITMAP quiet_unpushed;
static BITMAP quiet_mousemove;
static BITMAP return_pushed;
static BITMAP return_unpushed;
static BITMAP return_mousemove;
*/
static HWND hCtrl1;
static HWND hCtrl2;
static HWND hCtrl3;
static HWND hMainWnd;

int ringflag=1;//是否播放铃声,来电时判断
static char fullpath2[PATH_MAX + 1];
static char sys[1024] = "./fun/mplayer/mplayer ";


static void fill_boxes (HWND hDlg, const char* path)
{
    struct dirent* dir_ent;
    DIR*   dir;
    struct stat ftype;
    char   fullpath [PATH_MAX + 1];
    SendDlgItemMessage (hDlg, IDL_FILE, LB_RESETCONTENT, 0, (LPARAM)0);
    SetWindowText (GetDlgItem (hDlg, IDC_PATH), path);
    if ((dir = opendir (path)) == NULL)
         return;
    while ( (dir_ent = readdir ( dir )) != NULL ) 
    {
        strncpy (fullpath, path, PATH_MAX);
        strcat (fullpath, "/");
        strncpy(fullpath2, fullpath, PATH_MAX+1);
        strcat (fullpath, dir_ent->d_name);
        if (stat (fullpath, &ftype) < 0 )
              continue;

       if (S_ISREG (ftype.st_mode))
        {
            LISTBOXITEMINFO lbii;
            int i,j;
            char a[100]="\0";//播放的文件名
            char b[5]="\0";//存储.mp3/.MP3
            lbii.string = dir_ent->d_name;
            lbii.cmFlag = CMFLAG_BLANK;//未选中
            lbii.hIcon = 0;
            strcpy(a,dir_ent->d_name);
            i=strlen(dir_ent->d_name)-1;
            for(j=0;j<4;j++)
            {
               b[j]=a[i];
               i--;
            }
	   if(strcmp(b,"3pm.")==0||strcmp(b,"3PM.")==0)
            SendDlgItemMessage (hDlg, IDL_FILE, LB_ADDSTRING, 0, (LPARAM)&lbii);
       }	
    }
    closedir (dir);
}

static void prompt (HWND hDlg)
{
    int i;
    for (i = 0; i < SendDlgItemMessage (hDlg, IDL_FILE, LB_GETCOUNT, 0, 0L); i++)
    {
        char file [MAX_NAME + 1];
        int status = SendDlgItemMessage (hDlg, IDL_FILE, LB_GETCHECKMARK, i, 0);
        if (status == CMFLAG_CHECKED)
        {
            SendDlgItemMessage (hDlg, IDL_FILE, LB_GETTEXT, i, (LPARAM)file);
            system("killall mplayer");
            strcat (sys, fullpath2);
            strcat (sys, file);
            strcat (sys, " ");
            strcat (sys, " -zoom -x 270 -y 215&");
            system(sys);
			strcpy(sys,"./fun/mplayer/mplayer ");
        }
    }
}
static void file_notif_proc (HWND hwnd, int id, int nc, DWORD add_data)
{
if (nc == LBN_CLICKED ||nc == LBN_ENTER) 
    {
        int cur_sel = SendMessage (hwnd, LB_GETCURSEL, 0, 0L);
        if (cur_sel >= 0) 
        {
            char cwd [MAX_PATH + 1];
            char dir [MAX_NAME + 1];
            GetWindowText (GetDlgItem (hwnd, IDL_FILE), cwd, MAX_PATH);
            SendMessage (hwnd, LB_GETTEXT, cur_sel, (LPARAM)dir);
            if (strcmp (dir, ".") == 0)
            return;
            strcat (cwd, "/");
            strcat (cwd, dir);
            fill_boxes (GetParent (hwnd), cwd);
        }
    }
}


/*static void notify_proc (HWND hwnd, int id, int nc, DWORD add_data)
{	
	//printf("hwnd=%d\n", hwnd);		
	if ( hwnd == hCtrl1 && nc == MYBUTTON_PUSHED)
	{		
		SetWindowAdditionalData(hwnd, (DWORD)&common_pushed);
	} 
	if(hwnd == hCtrl2 && nc == MYBUTTON_PUSHED)
		{
			SetWindowAdditionalData(hwnd, (DWORD)&quiet_pushed);
		}
	if(hwnd == hCtrl3 && nc == MYBUTTON_PUSHED)
		{
			SetWindowAdditionalData(hwnd, (DWORD)&return_pushed);
		}
			
	if ( hwnd == hCtrl1 && nc == MYBUTTON_UNPUSHED)
	{
		SetWindowAdditionalData(hwnd, (DWORD)&common_unpushed);
		ringflag=1;
		prompt(hMainWnd);
		
		// add your business code
	} 
	if(hwnd == hCtrl2 && nc == MYBUTTON_UNPUSHED)
		{
			SetWindowAdditionalData(hwnd, (DWORD)&quiet_unpushed);
			if(ringflag==1)
				system("killall mplayer");
			ringflag=0;
		}
	if(hwnd == hCtrl3 && nc == MYBUTTON_UNPUSHED)
		{
			SetWindowAdditionalData(hwnd, (DWORD)&return_unpushed);
			if(ringflag ==1 )
				system("killall mplayer");
			SendNotifyMessage(hMainWnd,MSG_CLOSE,0,0);
		}
	
	if( hwnd == hCtrl1 && nc == MYBUTTON_MOUSEMOVE)
	{	
		SetWindowAdditionalData(hwnd, (DWORD)&common_mousemove);
	} 
	if(hwnd == hCtrl2 && nc == MYBUTTON_MOUSEMOVE)
		{
			SetWindowAdditionalData(hwnd, (DWORD)&quiet_mousemove);
		}
	if(hwnd == hCtrl3 && nc == MYBUTTON_MOUSEMOVE)
		{
			SetWindowAdditionalData(hwnd, (DWORD)&return_mousemove);
		}
	
	InvalidateRect (hwnd, NULL, TRUE);
}
*/
static int RingSetWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
      HDC hdc;
	  const RECT* clip;
	  RECT rcTemp;
	  BOOL fGetDC;
	char cwd [MAX_PATH + 1];
	switch (message)
        {
            case MSG_CREATE:
            {
				/*LoadBitmap (HDC_SCREEN, &common_pushed, "image/button/513.jpg");
        		LoadBitmap (HDC_SCREEN, &common_unpushed, "image/button/511.jpg");
        		LoadBitmap (HDC_SCREEN, &common_mousemove, "image/button/512.jpg");
        		LoadBitmap (HDC_SCREEN, &quiet_pushed, "image/button/523.jpg");
        		LoadBitmap (HDC_SCREEN, &quiet_unpushed, "image/button/521.jpg");
        		LoadBitmap (HDC_SCREEN, &quiet_mousemove, "image/button/522.jpg");
				LoadBitmap (HDC_SCREEN, &return_pushed, "image/button/533.jpg");
        		LoadBitmap (HDC_SCREEN, &return_unpushed, "image/button/531.jpg");
        		LoadBitmap (HDC_SCREEN, &return_mousemove, "image/button/532.jpg");
				*/
				CreateWindowEx (CTRL_STATIC, "文 件", WS_VISIBLE | SS_SIMPLE,WS_EX_TRANSPARENT,IDC_STATIC,15, 2, 140, 25,hWnd,0);
				CreateWindowEx(CTRL_LISTBOX,"",WS_VISIBLE | WS_VSCROLL | WS_BORDER | LBS_SORT |LBS_AUTOCHECKBOX,WS_EX_TRANSPARENT,IDL_FILE,15, 20, 160, 140,hWnd,0);		
				
				CreateWindow(CTRL_STATIC,"Path:",WS_VISIBLE | SS_SIMPLE,IDC_PATH,10, 150, 315, 0,hWnd,0);			   
			//	hCtrl1 = CreateWindowEx (CTRL_MYBUTTON,"铃声选择",WS_CHILD | BS_PUSHBUTTON | BS_CHECKED | WS_VISIBLE,WS_EX_TRANSPARENT,IDC_BUTTON,200, 20, 80, 25,  hWnd, (DWORD)&common_unpushed);
				hCtrl1 =CreateWindow ("button",
		                          "铃声选择",
		                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
		                          IDC_BUTTON,
		                          200, 20, 80, 25, hWnd, 0);
			//	hCtrl2 = CreateWindowEx (CTRL_MYBUTTON,"静音模式",WS_CHILD | BS_PUSHBUTTON | BS_MULTLINE | WS_VISIBLE,WS_EX_TRANSPARENT, IDC_BUTTON2,	200, 75, 80, 25,  hWnd, (DWORD)&quiet_unpushed);	
				hCtrl2 =CreateWindow ("button",
		                          "静音模式",
		                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
		                          IDC_BUTTON2,
		                          200, 75, 80, 25,  hWnd, 0);
				//hCtrl3 = CreateWindowEx (CTRL_MYBUTTON,"返回",WS_CHILD | BS_PUSHBUTTON | BS_MULTLINE | WS_VISIBLE,WS_EX_TRANSPARENT, IDC_BUTTON3,200, 130, 80, 25,  hWnd, (DWORD)&return_unpushed);
				hCtrl3 =CreateWindow ("button",
		                          "静音模式",
		                          WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,
		                          IDC_BUTTON3,
		                          200, 130, 80, 25,  hWnd, 0);
				//SetNotificationCallback (hCtrl1, notify_proc);
				//SetNotificationCallback (hCtrl2, notify_proc);
				//SetNotificationCallback (hCtrl3, notify_proc);
				
				SetNotificationCallback (GetDlgItem (hWnd, IDL_FILE), file_notif_proc);
				fill_boxes (hWnd, "./music");

			}
          return 0;
          
          case MSG_MOUSEMOVE:
				/*SetWindowAdditionalData(hCtrl1, (DWORD)&common_unpushed);
				SetWindowAdditionalData(hCtrl2, (DWORD)&quiet_unpushed);
				SetWindowAdditionalData(hCtrl3, (DWORD)&return_unpushed);
				*/
				InvalidateRect (hCtrl1, NULL, TRUE);
				InvalidateRect (hCtrl2, NULL, TRUE);
				InvalidateRect (hCtrl3, NULL, TRUE);
				break;
				
			case MSG_ERASEBKGND:
			{
	    			hdc = (HDC)wParam;
	    			clip = (const RECT*) lParam;
	    			fGetDC = FALSE;
	    			
	    			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_COMMAND:
    {
             switch (wParam)
             {
                case IDC_BUTTON://一般模式
			ringflag=1;
			prompt(hWnd);
                 	break;
                case IDC_BUTTON2://静音模式
                    if(ringflag==1)
                    system("killall mplayer");
					ringflag=0;
               		break;
				case IDC_BUTTON3:		//返回
					if(ringflag ==1 )
					system("killall mplayer");
					DestroyAllControls (hWnd);
					DestroyMainWindow (hWnd);
					PostQuitMessage (hWnd);
					break;		 
             }
			UpdateWindow(hWnd,1);
    }
	return 0;	

		 
	case MSG_CLOSE:				
		{
			UnloadBitmap (&bmp_bkgnd);
			/*UnloadBitmap (&return_pushed);
        	UnloadBitmap (&return_unpushed);
        	UnloadBitmap (&return_mousemove);
			UnloadBitmap (&common_pushed);
        	UnloadBitmap (&common_unpushed);
        	UnloadBitmap (&common_mousemove);
        	UnloadBitmap (&quiet_pushed);
        	UnloadBitmap (&quiet_unpushed);
        	UnloadBitmap (&quiet_mousemove);*/
			system("killall mplayer");
			DestroyAllControls (hWnd);
			DestroyMainWindow (hWnd);
			PostQuitMessage (hWnd);
		}
       	return 0;
	}
	return DefaultMainWinProc(hWnd, message, wParam, lParam);
}

int RingSet (HWND hWnd)
{
    MSG Msg;
   // HWND hMainWnd;
    MAINWINCREATE CreateInfo;
    
    RegisterMyButtonControl ();
    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 = RingSetWinProc;
    CreateInfo.lx = 0;
    CreateInfo.ty = 0;
    CreateInfo.rx = 320;
    CreateInfo.by = 216;
    CreateInfo.iBkColor = COLOR_lightwhite;
    CreateInfo.dwAddData = 0;
    CreateInfo.hHosting = hWnd;
	
	if (LoadBitmap (HDC_SCREEN, &bmp_bkgnd, "image/background/bkgnd29.jpg"))
         return -1;
	
    hMainWnd = CreateMainWindow (&CreateInfo);

    if (hMainWnd == HWND_INVALID)
    return -1;

    ShowWindow(hMainWnd, SW_SHOWNORMAL);

    while (GetMessage(&Msg, hMainWnd))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    UnregisterMyButtonControl ();
    MainWindowThreadCleanup (hMainWnd);
    return 0;
}

⌨️ 快捷键说明

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