📄 ringset.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 + -