📄 appmediaplayer.c
字号:
/****************************************************************************
// MainForm.c
// MMI主界面
// Create by jsguo 2005.9.8
****************************************************************************/
#include "../inc/nucleus.h"
#include "../inc/winconfig.h"
#include "MMI.h"
#include "../inc/windows.h"
#include "../inc/nucleus.h"
#include "../inc/nu_sd.h"
#include "icon.h"
#include "demoTest.h"
extern NU_SERIAL_PORT port;
int g_exitInitSign;
static int gnButtonSelectedItem=1;
char g_szInfoLeft_Media[30];
char g_szInfoRight_Media[30];
char g_szButtonLeft_Media[30];
char g_szButtonRight_Media[30];
LRESULT CALLBACK mediaplayerproc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam);
static CALCULAGRAPH gCalculagraphIn={COLOR_NORMAL,0x0000,0,{23,MAINFRAME_WIDTH_DEFAULT+30+7+3,60,MAINFRAME_WIDTH_DEFAULT+30+7+10}};
static SLIDER_Obj gSliderIn={0x40c1ff,0xffff00,1,10,MAINFRAME_WIDTH_DEFAULT-30,MAINFRAME_HEIGHT_DEFAULT-9,10};
static SLIDER_Obj gSliderVolumeIn={0x40c1ff,0xffff00,2,MAINFRAME_WIDTH_DEFAULT+30+10,MAINFRAME_HEIGHT_DEFAULT-10,MAINFRAME_WIDTH_DEFAULT-13,MAINFRAME_HEIGHT_DEFAULT-10};
typedef struct VM_MMI_MEDIA__STRUCT
{
char * AppName; // 程序名
unsigned char * pBitmap; // 位图
KeyEvent MediaPlayerEntry; // 主入口函数
}vmMediaPlayerApp;
static int gnButtonMatrix[6][4] =
{
{0,2,0,5},
{1,3,0,5},
{2,4,0,5},
{3,6,0,5},
{0,0,4,0},
{4,0,0,5},
};
// 在MMI上显示程序的信息
static vmMediaPlayerApp MediaPlayerList[] =
{
{"播放", playA, NULL},
{"暂停", pauseA, NULL},
{"停止", stopA, NULL},
{"录音", recordA, NULL},
{"播放", playB, User_MediaPlayer_Play},//,mediaplayer
{"暂停", pauseB, User_MediaPlayer_Pause},
{"停止", stopB, User_MediaPlayer_Stop},
{"录音", recordB, User_MediaPlayer_Record},
};
InitMWindow initMyMediaPlayer;
CloseMWindow closeMyMediaPlayer;
ExitInitMWindow exitInitMyMediaPlayer;
int SetMediaPlayer(InitMWindow init,ExitInitMWindow exitInit,CloseMWindow close)
{
memcpy(g_szInfoLeft_Media,"↑ PAN ↓ ",sizeof("↑ PAN ↓"));
memcpy(g_szInfoRight_Media,"← PAN →",sizeof("← PAN →"));
memcpy(g_szButtonLeft_Media,"DISPLAY",sizeof("DISPLAY"));
memcpy(g_szButtonRight_Media,"CANCEL",sizeof("CANCEL"));
initMyMediaPlayer=init;
initMyMediaPlayer();
exitInitMyMediaPlayer=exitInit;
closeMyMediaPlayer=close;
return 1;
}
int gMaxSliderValue;
int gMaxVolumeValue;
int MMI_SetSliderMaxValue(int MaxSliderValue)
{
//if(MaxSliderValue==0) return;
gMaxSliderValue=MaxSliderValue;
if(!gMaxSliderValue)
gMaxSliderValue=1;
PostMessage(GetActiveWindow(),WM_PAINT,0,0);
return 1;
}
int MMI_SetVolumeMaxValue(int MaxVolumeValue)
{
gMaxVolumeValue=MaxVolumeValue;
if(!gMaxVolumeValue)
gMaxVolumeValue=1;
PostMessage(GetActiveWindow(),WM_PAINT,0,0);
return 1;
}
int MMI_SetSliderValue(int CurrentSliderValue)
{
gSliderIn.slnCurrentX=gSliderIn.slnStartX+CurrentSliderValue*(gSliderIn.slnEndX-gSliderIn.slnStartX)/gMaxSliderValue;
PostMessage(GetActiveWindow(),WM_PAINT,0,0);
return 1;
}
int MMI_SetVolumeValue(int CurrentVolumeValue)
{
gSliderVolumeIn.slnCurrentX=gSliderVolumeIn.slnEndX-CurrentVolumeValue*(gSliderVolumeIn.slnEndX-gSliderVolumeIn.slnStartX)/gMaxVolumeValue;
PostMessage(GetActiveWindow(),WM_PAINT,0,0);
return 1;
}
int MMI_SetCalculagraphValue(int CurrentCalculagraphValue)
{
gCalculagraphIn.cgSecond=CurrentCalculagraphValue;
PostMessage(GetActiveWindow(),WM_PAINT,0,0);
return 1;
}
int MMI_SetMediaPlayerInfo(char* szInfoLeft,char* szInfoRight,char* szButtonLeft,char* szButtonRight)
{
if(szInfoLeft!=NULL)
{
memset(g_szInfoLeft_Media,0,sizeof(g_szInfoLeft_Media));
strcpy(g_szInfoLeft_Media,szInfoLeft);
}
if(szInfoRight!=NULL)
{
memset(g_szInfoRight_Media,0,sizeof(g_szInfoRight_Media));
strcpy(g_szInfoRight_Media,szInfoRight);
}
if(szButtonLeft!=NULL)
{
memset(g_szButtonLeft_Media,0,sizeof(g_szButtonLeft_Media));
strcpy(g_szButtonLeft_Media,szButtonLeft);
}
if(szButtonRight!=NULL)
{
memset(g_szButtonRight_Media,0,sizeof(g_szButtonRight_Media));
strcpy(g_szButtonRight_Media,szButtonRight);//sizeof(szButtonRight));
}
return 1;
}
int WINAPI MMediaPlayerForm(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static CHAR szAppName[]="MMediaPlayerForm";
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = (WNDPROC)mediaplayerproc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =0;
wndclass.hIcon =0;
wndclass.hCursor =0;
wndclass.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName = szAppName;
RegisterClass(&wndclass);
hwnd=CreateWindowEx(0L,
szAppName,
"mediaplayer",
WS_POPUP | WS_VISIBLE,//WS_OVERLAPPEDWINDOW
CW_USEDEFAULT,
CW_USEDEFAULT,
MAINFRAME_WIDTH_DEFAULT,
MAINFRAME_HEIGHT_DEFAULT,
NULL,
NULL,
NULL,
NULL);
g_exitInitSign=1;
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg,NULL,0,0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
extern int g_WaitSign;
extern UINT8 g_UAudioStop;
extern SETTING_ITEM MMI_VideoSetting[];
extern UINT16 Picturewidth; //display pan source picture size
extern UINT16 PictureHeight;
// 消息循环函数
LRESULT CALLBACK mediaplayerproc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rectDisplay,rectControl,rectButton,rectInfo;
HBRUSH hBrush,hSelectBrush,hControlBrush,hControlBrush1;
int item,keyvalue;
char strtmpResolution[30];
switch (iMsg)
{
case WM_PAINT:
hBrush = CreateSolidBrush(0xd4deee);
hSelectBrush = CreateSolidBrush(0);
hControlBrush = CreateSolidBrush(COLOR_SELECT);
hControlBrush1=CreateSolidBrush(0xffffff); //angela
hdc=BeginPaint(hwnd,&ps);
rectDisplay.top = 4;
rectDisplay.left = 4;
rectDisplay.right = MAINFRAME_WIDTH_DEFAULT-3;
rectDisplay.bottom = MAINFRAME_WIDTH_DEFAULT+30;
FillRect(hdc,&rectDisplay,hSelectBrush);
rectControl.top = MAINFRAME_WIDTH_DEFAULT+30;
rectControl.left = 0;
rectControl.right = MAINFRAME_WIDTH_DEFAULT;
rectControl.bottom = MAINFRAME_HEIGHT_DEFAULT;
FillRect(hdc,&rectControl,hBrush);
//Draw information bar
rectInfo.left = 4;
rectInfo.right = MAINFRAME_WIDTH_DEFAULT-4;
rectInfo.top = MAINFRAME_WIDTH_DEFAULT+30+4;
rectInfo.bottom =MAINFRAME_HEIGHT_DEFAULT-30;
rectInfo.right = MAINFRAME_WIDTH_DEFAULT/2-1;
FillRect(hdc,&rectInfo,hControlBrush);
DrawText(hdc,g_szInfoLeft_Media,-1,&rectInfo,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
rectInfo.left = MAINFRAME_WIDTH_DEFAULT/2+1;
rectInfo.right = MAINFRAME_WIDTH_DEFAULT-4;
FillRect(hdc,&rectInfo,hControlBrush);
DrawText(hdc,g_szInfoRight_Media,-1,&rectInfo,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
if(g_exitInitSign)
{
exitInitMyMediaPlayer();
g_exitInitSign=0;
}
//Draw top information angela added output information
rectInfo.left = 4;
rectInfo.right = MAINFRAME_WIDTH_DEFAULT-4;
rectInfo.top = 4;
rectInfo.bottom =16+4;
memset(strtmpResolution,0,30);
//strcat(strtmpResolution,MMI_VideoSetting[2].ItemName);
//strcat(strtmpResolution,"640x480");
sprintf(strtmpResolution,"照片尺寸%dx%d",Picturewidth,PictureHeight);
FillRect(hdc,&rectInfo,hControlBrush1);
DrawText(hdc,strtmpResolution,-1,&rectInfo,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
Uart_Printf("\n paint Picture source width : %d ",Picturewidth);
// Draw Button and Text
rectButton.left = 0;
rectButton.right = MAINFRAME_WIDTH_DEFAULT-0;
rectButton.top = MAINFRAME_HEIGHT_DEFAULT-30+2;
rectButton.bottom = MAINFRAME_HEIGHT_DEFAULT;
rectButton.right = MAINFRAME_WIDTH_DEFAULT/2-1;
FillRect(hdc,&rectButton,hControlBrush);
DrawText(hdc,g_szButtonLeft_Media,-1,&rectButton,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
rectButton.left = MAINFRAME_WIDTH_DEFAULT/2+1;
rectButton.right = MAINFRAME_WIDTH_DEFAULT-0;
FillRect(hdc,&rectButton,hControlBrush);
DrawText(hdc,g_szButtonRight_Media,-1,&rectButton,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);
DeleteObject(hSelectBrush);
DeleteObject(hBrush);
EndPaint(hwnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_KEYUP:
keyvalue = wParam - 49;
if(keyvalue == KEY_CANCEL)
{
PostMessage(hwnd,WM_CLOSE,0,1);
if(closeMyMediaPlayer!=NULL)
closeMyMediaPlayer();
gCalculagraphIn.cgSecond=0;
gSliderIn.slnCurrentX=10;
gSliderVolumeIn.slnCurrentX=MAINFRAME_HEIGHT_DEFAULT-9;
return 1;
}
switch(keyvalue) //by leon
{
case KEY_UP:
User_MediaPlayerKeyUp();
break;
case KEY_DOWN:
User_MediaPlayerKeyDown();
break;
case KEY_LEFT:
User_MediaPlayerKeyLeft();
break;
case KEY_RIGHT:
User_MediaPlayerKeyRight();
break;
case KEY_MIDDLE:
User_MediaPlayerKeyMiddle();
break;
default:
User_KeyValueEvent(keyvalue);
break;
}
if(keyvalue == KEY_OK)
{
// 根据当前选择的项目,调用相应的主函数
KeyEvent main = MediaPlayerList[gnButtonSelectedItem+4-1].MediaPlayerEntry;
if(main != NULL)
main(0, 0, 0);
PostMessage(hwnd,WM_PAINT,0,0);
}
break;
default:
return DefWindowProc(hwnd,iMsg,wParam,lParam);
}
return (0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -