win32 mp3.docx

上传人:b****6 文档编号:7985205 上传时间:2023-01-27 格式:DOCX 页数:16 大小:64.85KB
下载 相关 举报
win32 mp3.docx_第1页
第1页 / 共16页
win32 mp3.docx_第2页
第2页 / 共16页
win32 mp3.docx_第3页
第3页 / 共16页
win32 mp3.docx_第4页
第4页 / 共16页
win32 mp3.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

win32 mp3.docx

《win32 mp3.docx》由会员分享,可在线阅读,更多相关《win32 mp3.docx(16页珍藏版)》请在冰豆网上搜索。

win32 mp3.docx

win32mp3

//mp3.cpp:

Definestheentrypointfortheapplication.

//交流:

496087450

#include"stdafx.h"

#include"resource.h"

//#include

//#include

#include

#include

#include

#pragmacomment(lib,"WINMM.LIB")

#defineMAX_LOADSTRING100

#defineID_TIME1

#defineTIMER1000

//GlobalVariables:

HINSTANCEhInst;//currentinstance

TCHARszTitle[MAX_LOADSTRING];//Thetitlebartext

TCHARszWindowClass[MAX_LOADSTRING];//Thetitlebartext

MCI_OPEN_PARMSop;

MCI_PLAY_PARMSpp;

#definebtn22

#definebtn11

#definebtn33

#definebtn44

#definebtn55

typedefstructMUSIC_TITAL_INFO

{

charhead[3];//TAG

charMUSIC_NAME[30];//存储标题信息

charArtist[30];//存储歌手信息

charAlbum[30];//存储专辑信息

charYEAR[4];//存储年代信息

charComments[28];//存储备注信息,28个字节(有时为30字节)

charGenre[2];//存储音乐风格信息,保留位,1个字节

//charReserved;//保留位,1个字节(有时没有意思

//charTrack;//音轨(曲号)保留位,1个字节(有时没有)

}MUSIC;

//Fowarddeclarationsoffunctionsincludedinthiscodemodule:

ATOMMyRegisterClass(HINSTANCEhInstance);

BOOLInitInstance(HINSTANCE,int);

LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);

LRESULTCALLBACKAbout(HWND,UINT,WPARAM,LPARAM);

intAPIENTRYWinMain(HINSTANCEhInstance,

HINSTANCEhPrevInstance,

LPSTRlpCmdLine,

intnCmdShow)

{

//TODO:

Placecodehere.

MSGmsg;

//HACCELhAccelTable;

//Initializeglobalstrings

LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);

LoadString(hInstance,IDC_MP3,szWindowClass,MAX_LOADSTRING);

MyRegisterClass(hInstance);

//Performapplicationinitialization:

if(!

InitInstance(hInstance,nCmdShow))

{

returnFALSE;

}

while(GetMessage(&msg,NULL,0,0))

{

if(!

TranslateAccelerator(msg.hwnd,NULL,&msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

returnmsg.wParam;

}

ATOMMyRegisterClass(HINSTANCEhInstance)

{

WNDCLASSEXwcex;

wcex.cbSize=sizeof(WNDCLASSEX);

wcex.style=CS_HREDRAW|CS_VREDRAW;

wcex.lpfnWndProc=(WNDPROC)WndProc;

wcex.cbClsExtra=0;

wcex.cbWndExtra=0;

wcex.hInstance=hInstance;

wcex.hIcon=LoadIcon(hInstance,(LPCTSTR)IDI_MP3);

wcex.hCursor=LoadCursor(NULL,IDC_ARROW);

wcex.hbrBackground=(HBRUSH)(COLOR_INACTIVECAPTION);

//COLOR_BACKGROUND);//COLOR_WINDOWTEXT);//COLOR_MENUTEXT);//

wcex.lpszMenuName=NULL;//(LPCSTR)IDC_MP3;

wcex.lpszClassName=szWindowClass;

wcex.hIconSm=LoadIcon(wcex.hInstance,(LPCTSTR)IDI_SMALL);

returnRegisterClassEx(&wcex);

}

BOOLInitInstance(HINSTANCEhInstance,intnCmdShow)

{

HWNDhWnd;

hInst=hInstance;//Storeinstancehandleinourglobalvariable

hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW&~WS_THICKFRAME&~WS_MAXIMIZEBOX,//ws_minimizebox,

CW_USEDEFAULT,CW_USEDEFAULT,155,205,NULL,NULL,hInstance,NULL);

if(!

hWnd)

{

returnFALSE;

}

ShowWindow(hWnd,nCmdShow);

UpdateWindow(hWnd);

returnTRUE;

}

staticinttotal_file_num=0;

staticOPENFILENAMEofn;//配置打开对话框参数

staticcharszOpenFileNames[80*MAX_PATH];//初始化时用来获取文件名的变量

staticcharszFileName_Path[255][MAX_PATH];//记录歌曲的绝对路径,包含文件名

staticcharszFile[MAX_PATH];//存储路径

staticintcurrent_music_num=0;

boolinit_dev=0;

boolis_play=0;

intvol_flag=0;

intopen=1;/////

MUSICm;

//boolflags=0;

BOOLOpenFileDlg()

{

returnGetOpenFileName(&ofn);//打开设置好的对话框

}

voidFileInit(HWNDhwnd)

{

ZeroMemory(&ofn,sizeof(ofn));

ofn.lStructSize=sizeof(ofn);

ofn.lpstrFile=szOpenFileNames;

ofn.lpstrFile[0]=TEXT('\0');

ofn.nMaxFile=sizeof(szOpenFileNames);

ofn.lpstrFilter=TEXT("所有支持文件(*.wav,*.mp3,*.wma)\0*.wav;*.mp3;*.wma\0wave文件(*.wav)\0*.wav\0mp3文件(*.mp3)\0*.mp3\0wma文件(*.wma)\0*.wma\0");

ofn.nFilterIndex=1;

ofn.lpstrFileTitle=NULL;

ofn.nMaxFileTitle=0;

ofn.lpstrInitialDir=NULL;

ofn.hwndOwner=hwnd;

ofn.Flags=OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_ALLOWMULTISELECT;

}

intadd_file(HWNDhwnd)

{

FileInit(hwnd);//文件初始化

if(TRUE==OpenFileDlg())

{

lstrcpyn(szFile,szOpenFileNames,ofn.nFileOffset);

szFile[ofn.nFileOffset]='\0';

intnLen=lstrlen(szFile);

if(szFile[nLen-1]!

='\\')//如果选了多个文件,则必须加上'\\'

{

lstrcat(szFile,TEXT("\\"));

}

char*p=szOpenFileNames+ofn.nFileOffset;//把指针移到第一个文件

while(*p)

{

lstrcpy(szFileName_Path[total_file_num],szFile);//将路径复制给szFileName_Path

lstrcat(szFileName_Path[total_file_num],p);//加上文件名

p+=lstrlen(p)+1;//移至下一个文件

total_file_num++;

}

}

return0;

}

voidinit_play()

{

op.lpstrElementName=szFileName_Path[current_music_num];//文件路径

mciSendCommand(op.wDeviceID,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)&op);

mciSendCommand(op.wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)&pp);//播放文,为了避免这种情况可以设为MCI_NOTIFY

}

intup_down(booldown)

{

mciSendCommand(op.wDeviceID,MCI_CLOSE,MCI_NOTIFY,(DWORD)&op);//播放文,为了避免这种情况可以设为MCI_NOTIFY

if(down)

{

if(current_music_num+1==total_file_num)

current_music_num=0;

else

current_music_num++;

}

else

{

if(current_music_num==0)

current_music_num=total_file_num-1;

else

current_music_num--;

}

init_play();

return0;

}

voidctl_volume(HWNDhwnd,intad_flag)

{

TCHARcmd[256];//用来储存格式化后的指令

intnVolume;//把得到的文本型音量数据转换成整形,方便作加减处

TCHARvolume[256];//用来储存从音乐中拿来的音量大小数据

wsprintf(cmd,"status%svolume",szFileName_Path[current_music_num]);//件路径

mciSendString(cmd,volume,sizeof(volume),hwnd);//把当前的音量状态存在volume字符串中

nVolume=atoi(volume);//字符串转化成整型

wsprintf(cmd,"setaudio%svolumeto%i",szFileName_Path[current_music_num],nVolume-100*ad_flag);

mciSendString(cmd,"",0,hwnd);//把结果安装回去

}

inthaha(charstr[])

{

intnum=0;

for(unsignedinti=0;i<3;i++)

{

num=num+str[i]-'0';

num=num*10;

}

returnnum/10;

}

/*-------------------------------------------

floatset()

{

charcmd[256],len[256],c[3];

intcurrent=0;

inttotal=0;

wsprintf(cmd,"status%sposition",szFileName_Path[current_music_num]);

mciSendString(cmd,len,255,NULL);

strncpy(c,len,3);

current=haha(c);

wsprintf(cmd,"status%slength",szFileName_Path[current_music_num]);

mciSendString(cmd,len,255,NULL);

strncpy(c,len,3);

total=haha(c);

return(1.0*current/total);///total;

}

-----------------------------------------------------------*/

voidread_music(chars[])

{

FILE*fp;

fp=fopen(s,"r");

fseek(fp,-128,SEEK_END);

fread(&m,sizeof(structMUSIC_TITAL_INFO),1,fp);

if(!

(m.head[0]=='T'&&m.head[1]=='A'&&m.head[2]=='G'))

lstrcpy(m.MUSIC_NAME,"Fileisn'tstandard!

");

}

DWORDmci_get_length()

{

DWORDdwlength;

MCI_STATUS_PARMSmcisp;

mcisp.dwItem=MCI_STATUS_LENGTH;

DWORDdwreturn=mciSendCommand(op.wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,

(DWORD)(LPVOID)&mcisp);

if(dwreturn==0)

dwlength=mcisp.dwReturn/1000;

returndwlength;

}

DWORDmci_get_pos()

{

DWORDdwpos;

MCI_STATUS_PARMSmcisp;

mcisp.dwItem=MCI_STATUS_POSITION;

DWORDdwreturn=mciSendCommand(op.wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,

(DWORD)(LPVOID)&mcisp);

if(dwreturn==0)

dwpos=mcisp.dwReturn/1000;

returndwpos;

}

floatpercent=0;

DWORDlength=0;//mci_get_length();

LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)

{

intwmId,wmEvent;

PAINTSTRUCTps;

HDChdc;

TCHARszHello[MAX_LOADSTRING];

LoadString(hInst,IDS_HELLO,szHello,MAX_LOADSTRING);

switch(message)

{

caseWM_CREATE:

{

//SetWindowLong(hWnd,GWL_STYLE,GetWindowLong(hWnd,GWL_STYLE)&~WS_CAPTION);

//SetWindowPos(hWnd,NULL,0,0,0,0,SWP_NOSIZE);//*|SWP_NOMOVE*/|SWP_NOZORDER|SWP_DRAWFRAME);

HWNDhButton1=CreateWindow(_T("button"),_T("<<"),

WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,5,100,28,40,hWnd,(HMENU)btn1,hInst,NULL);

HWNDhButton2=CreateWindow(_T("button"),_T("play/stop"),

WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,34,100,80,40,hWnd,(HMENU)btn2,hInst,NULL);

HWNDhButton3=CreateWindow(_T("button"),_T(">>"),

WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,115,100,28,40,hWnd,(HMENU)btn3,hInst,NULL);

HWNDhButton4=CreateWindow(_T("button"),_T("open"),

WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,34,75,80,24,hWnd,(HMENU)btn4,hInst,NULL);

HWNDhButton5=CreateWindow(_T("button"),_T("volume"),

WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,34,141,80,24,hWnd,(HMENU)btn5,hInst,NULL);

//SetBkColor(hdc,RGB(17,105,238));

op.dwCallback=NULL;

op.lpstrAliase=NULL;

op.lpstrDeviceType=_T("MPEGAudio");//设备类型,大多数文件可以这样设置

op.lpstrElementName=NULL;//_T("D:

\\s.mp3");//文件路径

op.wDeviceID=NULL;//打开设备成功以后保存这个设备号备用

strcpy(m.MUSIC_NAME,"NoFile");

//mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)&op);

}break;

caseWM_COMMAND:

wmId=LOWORD(wParam);

wmEvent=HIWORD(wParam);

//Parsethemenuselections:

switch(wmId)

{

casebtn1:

{

if(vol_flag)

{

ctl_volume(hWnd,1);SetTimer(hWnd,ID_TIME,TIMER,NULL);

}

else

{

up_down(0);

if(open==0)

{

read_music(szFileName_Path[current_music_num]);

length=mci_get_length();

}

InvalidateRect(hWnd,NULL,0);

}

}break;

casebtn2:

{

//TextOut(hdc,40,200,"音量调节中..",strlen("音量调节中.."));

if(!

init_dev)//firstinit_dev_and_play

{

pp.dwFrom=0;

pp.dwCallback=(DWORD)hWnd;

init_play();

init_dev=1;

is_play=1;

if(open==0)

read_music(szFileName_Path[current_music_num]);

length=mci_get_length();

SetTimer(hWnd,ID_TIME,TIMER,NULL);

InvalidateRect(hWnd,NULL,0);

break;

}

if(is_play)

{

mciSendCommand(op.wDeviceID,MCI_PAUSE,MCI_NOTIFY,(DWORD)&op);

is_play=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1