win32 mp3Word下载.docx
- 文档编号:21121485
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:16
- 大小:64.85KB
win32 mp3Word下载.docx
《win32 mp3Word下载.docx》由会员分享,可在线阅读,更多相关《win32 mp3Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
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(&
}
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);
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]='
;
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)&
//播放文,为了避免这种情况可以设为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;
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);
//字符串转化成整型
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;
status%sposition"
szFileName_Path[current_music_num]);
mciSendString(cmd,len,255,NULL);
strncpy(c,len,3);
current=haha(c);
status%slength"
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;
mcisp.dwItem=MCI_STATUS_POSITION;
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("
play/stop"
),
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,34,100,80,40,hWnd,(HMENU)btn2,hInst,NULL);
HWNDhButton3=CreateWindow(_T("
>
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,115,100,28,40,hWnd,(HMENU)btn3,hInst,NULL);
HWNDhButton4=CreateWindow(_T("
open"
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,34,75,80,24,hWnd,(HMENU)btn4,hInst,NULL);
HWNDhButton5=CreateWindow(_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)&
}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);
break;
if(is_play)
mciSendCommand(op.wDeviceID,MCI_PAUSE,MCI_NOTIFY,(DWORD)&
is_play=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- win32 mp3