版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、VC+課程設(shè)計(jì) 福建工程學(xué)院VC+課程設(shè)計(jì)課 題: 音頻播放器 班 級(jí): 通信1202 學(xué) 號(hào): 3120210114 姓 名: 陳李萍 同組組員: 林志濱 林劍花 陳李萍 熊建 朱煒明 周士煒 馬率杰指導(dǎo)老師: 黃旭紅 林挺釗 陳健 日 期: 2013/11/2511/29 目 錄一、設(shè)計(jì)目的與要求3二、準(zhǔn)備工作3三、系統(tǒng)分析及實(shí)現(xiàn)步驟33.1、系統(tǒng)實(shí)現(xiàn)的方法.33.2、程序設(shè)計(jì)的總框圖.43.3、項(xiàng)目的具體設(shè)計(jì)方案(設(shè)計(jì)原理與流程圖等)43.4 擴(kuò)展部分(根據(jù)實(shí)際情況而定,如果沒有擴(kuò)展部分,則不寫)93.5 類聲明與核心算法程序代碼.12四、測(cè)試與結(jié)論20五、課程設(shè)計(jì)總結(jié)24六、參考文獻(xiàn)2
2、5七、附錄2521、 設(shè)計(jì)的目的與要求多媒體技術(shù)的發(fā)展使得計(jì)算機(jī)應(yīng)用范圍更加廣泛,目前各類多媒體播放軟件層出不窮。試開發(fā)一個(gè)簡(jiǎn)易的音頻播放器,求如下:1、 菜單式的人機(jī)界面。2、 具有打開、播放、停止、暫停、定時(shí)播放的功能。3、 可控制音量、左右聲道、靜音。4、具有顯示音頻波形的特效。 二、準(zhǔn)備工作在開始做課程設(shè)計(jì)項(xiàng)目前應(yīng):1、 應(yīng)回顧或復(fù)習(xí)C+專業(yè)課所學(xué)習(xí)的內(nèi)容,及課外編程實(shí)例2、 需要一臺(tái)PC機(jī)3、 安裝Visual C+6.0集成開發(fā)環(huán)境軟件4、 項(xiàng)目主要用到的函數(shù) OnAdd()添加功能StoreList()、ReadList()播放列表功能 On Clear() 清空播放列表功能 O
3、nPlayOrPause()播放/暫停功能 SetVolumee、Oninvolume()、Ondevolume() 音量功能 BOOL LineTo()MoveToEx()波形顯示GetDlgItem()Getwindowtext()SetWindowText()定時(shí)播放功能三、系統(tǒng)分析與項(xiàng)目的實(shí)現(xiàn)步驟3.1、系統(tǒng)實(shí)現(xiàn)的方法: MFC類庫將所有圖形用戶界面的元素如窗口、菜單和按鈕等都以類的形式進(jìn)行了封裝,MFC AppWizard向?qū)Ц鶕?jù)繼承性利用MFC派生出自己的類,并對(duì)Windows應(yīng)用程序進(jìn)行了分解,利用MFC派生類對(duì)應(yīng)用程序重新進(jìn)行組裝,同時(shí)還規(guī)定了應(yīng)用程序中各個(gè)MFC派生類對(duì)象之間
4、的相互聯(lián)系,實(shí)現(xiàn)了標(biāo)準(zhǔn)Windows應(yīng)用程序的功能,這就是向?qū)傻乃^MFC應(yīng)用程序框架。每個(gè)MFC類都包括了一些函數(shù),函數(shù)放到類中,符合C+編程方法。這些函數(shù),必須通過類定義對(duì)象才能使用。 在本次設(shè)計(jì)中,首先,理清課程設(shè)計(jì)和編寫程序的思路,明確程序中所要用到的函數(shù),并做好了解。然后,再利用C+類的繼承與派生原理來構(gòu)造所需要的類,編寫實(shí)現(xiàn)每項(xiàng)功能的詳細(xì)代碼。利用MFC提供的菜單資源來創(chuàng)建菜單,通過類向?qū)Ы㈩?,函?shù),或者消息響應(yīng),來實(shí)現(xiàn)播放器的各種功能。采用不同的Windows提供的坐標(biāo)系統(tǒng)和對(duì)話框資源,并利用設(shè)備環(huán)境來繪制和更新圖形,使播放器的界面更加美觀,實(shí)現(xiàn)較好的人機(jī)交互界面。 畫出系
5、統(tǒng)模塊功能圖 : 3.2、程序設(shè)計(jì)的總框圖添加音樂及視頻開始播放停止播放結(jié)束退出暫停3.3、項(xiàng)目的具體設(shè)計(jì)方案設(shè)計(jì)原理:MP3播放器主要對(duì)常用Windows音頻格式的文件實(shí)現(xiàn)播控制:播放歌曲、暫停播放、停止播放等;實(shí)現(xiàn)音量控制:靜音、聲音放大以及聲音減小的功能。此播放器編寫的時(shí)候,利用的是MFC單文檔程序的構(gòu)成框架,然后再利用Windows提供的資源,運(yùn)用控件,自己制作對(duì)話框和人機(jī)交互界面。在制作界面的同時(shí),也制作各個(gè)按鈕,并完成各個(gè)按鈕的消息響應(yīng),便完成響應(yīng)函數(shù),實(shí)現(xiàn)了功能。MFC類庫將所有圖形用戶界面的元素如窗口、菜單和按鈕等都以類的形式進(jìn)行了封裝,MFC AppWizard向?qū)Ц鶕?jù)繼承性
6、利用MFC派生出自己的類,并對(duì)Windows應(yīng)用程序進(jìn)行了分解,利用MFC派生類對(duì)應(yīng)用程序重新進(jìn)行組裝,同時(shí)還規(guī)定了應(yīng)用程序中各個(gè)MFC派生類對(duì)象之間的相互聯(lián)系,實(shí)現(xiàn)了標(biāo)準(zhǔn)Windows應(yīng)用程序的功能,這就是向?qū)傻乃^MFC應(yīng)用程序框架。每個(gè)MFC類都包括了一些函數(shù),函數(shù)放到類中,符合C+編程方法。這些函數(shù),必須通過類定義對(duì)象才能使用。在本次設(shè)計(jì)中,首先,理清課程設(shè)計(jì)和編寫程序的思路,明確程序所要用到的函數(shù),并做好了解。然后,再利用C+類的繼承與派生原理來構(gòu)造所需要的類,編寫實(shí)現(xiàn)每項(xiàng)功能的詳細(xì)代碼。利用MFC提供的菜單資源來創(chuàng)建菜單,通過類向?qū)Ы㈩?,函?shù),或者消息響應(yīng),來實(shí)現(xiàn)播放器的各種
7、功能。 1、人機(jī)界面設(shè)計(jì) 播放器界面設(shè)計(jì) 打開VC C+6.0新建一個(gè)工程,選擇對(duì)話框。便生成了一個(gè) 窗口。然后打開ResouceView,點(diǎn)開Dialog,插入Dialog,利用控件,繪制各 按鈕。如圖所示: 2、添加media player控件 如圖所示: 3、 各按鈕功能的實(shí)現(xiàn)(1) 處理“添加文件”按鈕 單擊“添加文件”按鈕后,在Onopen()函數(shù)中,首先對(duì)文件類型進(jìn)行過濾,調(diào)用OpenFiles()函數(shù)打開對(duì)話框選擇一個(gè)音頻文件,通過InitPath()函數(shù)獲取文件路徑,通過InitPath()函數(shù)獲取文件名后,調(diào)用SaveList()函數(shù)在Static Text控件上顯示你所選擇
8、的歌曲文件名,然后再單擊播放按鈕,便可以播放歌曲。 3.4 擴(kuò)展部分1. 簡(jiǎn)單聲音錄制與播放vmf庫中提供了一組錄制聲音的函數(shù),通過MCIWndCanRecord函數(shù)可以判斷系統(tǒng)能否錄制聲音,通過函數(shù)MCIWndRecord可以進(jìn)行聲音錄制。如果要播放錄制的聲音可以使用MCIWndPlay函數(shù)。界面設(shè)計(jì)如下:2. 視頻播放運(yùn)用Windows media player控件可以支持播放多種格式的音樂和視頻,Windows media player控件不是系統(tǒng)默認(rèn)控件,所以需要向該工程中添加該控件,視頻播放展示: 3.5 類聲明與核心算法程序代碼1.類與函數(shù)層次介紹CMP3_1DlgPlaySetV
9、olumnStopLoadPause圖7-1-a類與函數(shù)層次關(guān)系圖Pause:暫態(tài)正在播放的音樂Play:控制音樂播放Stop:停止播放音樂Load:加載播放的音樂RetVolumn:設(shè)置音樂播放音量2. 核心代碼功能介紹BOOL CMP3_1Dlg:OnInitDialog()/系統(tǒng)參數(shù)初始化函數(shù)CDialog:OnInitDialog();.SetWindowPos(NULL,0,0,480,340,SWP_NOMOVE);/界面無相對(duì)移動(dòng)m_channel.SetRange(0,200);/設(shè)置左右聲道滑塊范圍m_channel.SetPos(100);/設(shè)置左右聲道滑塊初始范圍/ TO
10、DO: Add extra initialization herefor(int i=0;i<24;i+)/定時(shí)器設(shè)置時(shí)CString temp;temp.Format("%02d",i);m_hour.AddString(temp);for(int p=0;p<60;p+)/定時(shí)器設(shè)置分CString temp;temp.Format("%02d",p);m_minu.AddString(temp);return TRUE; / return TRUE unless you set the focus to a controlvoid CM
11、P3_1Dlg:OnOpen() /添加文件到播放列表函數(shù)/ TODO: Add your control notification handler code herechar szFileFilter="Mp3 File(*.mp3)|*.mp3|" "Wma File(*.wma)|*.wma|" "Video File(*.dat)|*.dat|" "Wave File(*.wav)|*.wav|" "AVI File(*.avi)|*.avi|" "Movie File(*.m
12、ov)|*.mov|" "Media File(*.mmm)|*.mmm|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "MPEG File(*.mpeg)|*.mpeg|" "Flv File(*.flv)|*.flv|" "WMV File(*.wmv)|*.wmv|" "All File(*.*)|*.*| "/文件類型過濾 CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFi
13、leFilter); if(dlg.DoModal()=IDOK) PathName=dlg.GetPathName(); GetDlgItem(IDC_PLAYLIST)->SetWindowText(PathName); PathName.MakeUpper(); void CMP3_1Dlg:OnAdd() /定時(shí)器文件添加函數(shù)/ TODO: Add your control notification handler code herechar szFileFilter="Mp3 File(*.mp3)|*.mp3|" "Wma File(*.wma)
14、|*.wma|" "Video File(*.dat)|*.dat|" "Wave File(*.wav)|*.wav|" "AVI File(*.avi)|*.avi|" "Movie File(*.mov)|*.mov|" "Media File(*.mmm)|*.mmm|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "MPEG File(*.mpeg)|*.mpeg|" "Flv File(*.fl
15、v)|*.flv|" "WMV File(*.wmv)|*.wmv|" "All File(*.*)|*.*| "/文件類型過濾 CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter); / CFileDialog log(TRUE,"文件","*.wav",OFN_HIDEREADONLY,"聲音文件(*.wav)|*.wav|",NULL);if(dlg.DoModal()=IDOK)pathname=dlg.Ge
16、tPathName(); GetDlgItem(IDC_EDWAVFILE)->SetWindowText(pathname);pathname.MakeUpper(); void CMP3_1Dlg:OnSet() /定時(shí)播放歌曲設(shè)定函數(shù)/ TODO: Add your control notification handler code here/*CString name;GetDlgItem(IDC_BTSET)->GetWindowText(name);if(name="重新設(shè)置")GetDlgItem(IDC_BTSET)->SetWindowT
17、ext("設(shè)置");m_hour.EnableWindow();m_minu.EnableWindow();m_wavfile.EnableWindow();elseGetDlgItem(IDC_BTSET)->SetWindowText("重新設(shè)置");m_hour.EnableWindow(FALSE);m_minu.EnableWindow(FALSE);m_wavfile.EnableWindow(FALSE);CString sound,hour,minu,time;GetDlgItem(IDC_CMBHOUR)->GetWindo
18、wText(hour);GetDlgItem(IDC_CMBMINU)->GetWindowText(minu);GetDlgItem(IDC_EDWAVFILE)->GetWindowText(sound);if(sound.IsEmpty()MessageBox("請(qǐng)選擇聲音文件","提示",MB_OK);return;if(hour.IsEmpty()MessageBox("請(qǐng)選擇聲音小時(shí)","提示",MB_OK);return;if(minu.IsEmpty()MessageBox("
19、請(qǐng)選擇聲音分鐘","提示",MB_OK);return;time.Format("%s:%s",hour,minu);strtime=time;strsound=sound;SetTimer(1,1000,NULL);/*/*系統(tǒng)定時(shí)函數(shù)*void CMP3_1Dlg:OnTimer(UINT nIDEvent) CTime tt;tt=CTime:GetCurrentTime();CString tmp=tt.Format("%H:%M");if(tmp=strtime)KillTimer(1);m_player.SetU
20、rl(pathname); /*左右聲道設(shè)置函數(shù)*/void CMP3_1Dlg:OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) DWORD pos;int scrollpos;scrollpos=m_channel.GetPos();if(scrollpos<100):waveOutGetVolume(0,&pos);pos=pos&0x0000ffff|(scrollpos+50)<<8);:waveOutSetVolume(0,pos);if(scrollpos>100):wav
21、eOutGetVolume(0,&pos);pos=pos&0xffff0000|(scrollpos-50)<<24);:waveOutSetVolume(0,pos);CDialog:OnHScroll(nSBCode, nPos, pScrollBar);void CMP3_1Dlg:OnRecord() /錄音函數(shù)/ TODO: Add your control notification handler code hereMCIWndClose(mciwav);mciwav=MCIWndCreate(this->m_hWnd,:AfxGetApp()-
22、>m_hInstance,WS_CAPTION,NULL);MCIWndNew(mciwav,"waveaudio"); if(MCIWndCanRecord(mciwav) MCIWndRecord(mciwav);void CMP3_1Dlg:Onplay() /開始播放文件/ TODO: Add your control notification handler code herem_player.SetUrl(PathName); 4、 測(cè)試與結(jié)論1.經(jīng)過測(cè)試該MP3具有打開、播放、停止、暫停、定時(shí)播放的功能??煽刂埔袅俊⒆笥衣暤?、靜音,可以實(shí)現(xiàn)顯示音頻波形的
23、特效。MP3播放測(cè)試如下:2. 經(jīng)過測(cè)試,該軟件可以支持多種主流視頻格式的波蕩。視頻播放測(cè)試如下:5、 課程設(shè)計(jì)總結(jié) 6、 參考文獻(xiàn)1明日科技編著:Visual C+開發(fā)經(jīng)驗(yàn)技巧寶典,人民郵電出版社2007年版。2劉銳寧編著:Visual C+開發(fā)實(shí)戰(zhàn)1200例第一卷,清華大學(xué)出版社2011年版。3明日科技編著:Visual C+程序開發(fā)范例寶典,人民郵電出版社2007年版。4董正言 張聰編著:面向?qū)ο蟮某绦蛟O(shè)計(jì)(C+版),清華大學(xué)出版社2014年版。七、附錄主要程序的完整代碼,人機(jī)界面圖(備注:字體統(tǒng)一用宋體、小四)附件一:人機(jī)界面圖附件二:程序主要源代碼/ MP3_1Dlg.cpp : i
24、mplementation file/#include "stdafx.h"#include "MP3_1.h"#include "MP3_1Dlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_
25、DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAbou
26、tDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMP3
27、_1Dlg dialogCMP3_1Dlg:CMP3_1Dlg(CWnd* pParent /*=NULL*/): CDialog(CMP3_1Dlg:IDD, pParent)/AFX_DATA_INIT(CMP3_1Dlg)/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CMP3_1Dlg:DoDataExchange(CDataExchange* pDX)CD
28、ialog:DoDataExchange(pDX);/AFX_DATA_MAP(CMP3_1Dlg)DDX_Control(pDX, IDC_CHANNEL, m_channel);DDX_Control(pDX, IDC_PLAYLIST, m_playlist);DDX_Control(pDX, IDC_EDWAVFILE, m_wavfile);DDX_Control(pDX, IDC_CMBMINU, m_minu);DDX_Control(pDX, IDC_CMBHOUR, m_hour);DDX_Control(pDX, IDC_OCX1, m_player);/AFX_DATA_
29、MAPBEGIN_MESSAGE_MAP(CMP3_1Dlg, CDialog)/AFX_MSG_MAP(CMP3_1Dlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_OPEN, OnOpen)ON_EN_CHANGE(IDC_EDWAVFILE, OnChangeEdwavfile)ON_CBN_EDITCHANGE(IDC_CMBHOUR, OnEditchangeCmbhour)ON_CBN_EDITCHANGE(IDC_CMBMINU, OnEditchangeCmbminu)ON_BN_
30、CLICKED(IDC_BTADD, OnAdd)ON_BN_CLICKED(IDC_BTEST, OnSet)ON_WM_TIMER()ON_BN_CLICKED(IDC_BTRECORD, OnRecord)ON_BN_CLICKED(IDC_BTSTOP, OnStop)ON_BN_CLICKED(IDC_BTPLAY, OnPlay)ON_NOTIFY(NM_OUTOFMEMORY, IDC_CHANNEL, OnOutofmemoryChannel)ON_WM_HSCROLL()ON_EN_CHANGE(IDC_PLAYLIST, OnChangePlaylist)ON_BN_CLI
31、CKED(IDDELE, Onlist)ON_BN_CLICKED(IDC_REC, OnRec)ON_BN_CLICKED(IDC_LRSOUND, OnLrsound)ON_BN_CLICKED(IDC_SETTIME, OnSettime)ON_BN_CLICKED(IDC_play, Onplay)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMP3_1Dlg message handlersBOOL CMP3_1Dlg:OnInitDialog()CDialog:OnInitDialog();/ Add "About." menu item to
32、 system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMen
33、u->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon Set
34、WindowPos(NULL,0,0,480,340,SWP_NOMOVE);/無相對(duì)移動(dòng)m_channel.SetRange(0,200);m_channel.SetPos(100);/ TODO: Add extra initialization herefor(int i=0;i<24;i+)CString temp;temp.Format("%02d",i);m_hour.AddString(temp);for(int p=0;p<60;p+)CString temp;temp.Format("%02d",p);m_minu.AddS
35、tring(temp);return TRUE; / return TRUE unless you set the focus to a controlvoid CMP3_1Dlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will nee
36、d the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CMP3_1Dlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center ico
37、n in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system cal
38、ls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CMP3_1Dlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CMP3_1Dlg:OnOpen() / TODO: Add your control notification handler code herechar szFileFilter="Mp3 File(*.mp3)|*.mp3|" "Wma File(*.wma)|*.w
39、ma|" "Video File(*.dat)|*.dat|" "Wave File(*.wav)|*.wav|" "AVI File(*.avi)|*.avi|" "Movie File(*.mov)|*.mov|" "Media File(*.mmm)|*.mmm|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "MPEG File(*.mpeg)|*.mpeg|" "Flv File(*.flv)|*
40、.flv|" "WMV File(*.wmv)|*.wmv|" "All File(*.*)|*.*| "/文件類型過濾 CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter); if(dlg.DoModal()=IDOK) PathName=dlg.GetPathName(); GetDlgItem(IDC_PLAYLIST)->SetWindowText(PathName); PathName.MakeUpper(); void CMP3_1Dlg:OnChangeE
41、dwavfile() / TODO: If this is a RICHEDIT control, the control will not/ send this notification unless you override the CDialog:OnInitDialog()/ function and call CRichEditCtrl().SetEventMask()/ with the ENM_CHANGE flag ORed into the mask./ TODO: Add your control notification handler code herevoid CMP
42、3_1Dlg:OnEditchangeCmbhour() / TODO: Add your control notification handler code herevoid CMP3_1Dlg:OnEditchangeCmbminu() / TODO: Add your control notification handler code herevoid CMP3_1Dlg:OnAdd() / TODO: Add your control notification handler code herechar szFileFilter="Mp3 File(*.mp3)|*.mp3|
43、" "Wma File(*.wma)|*.wma|" "Video File(*.dat)|*.dat|" "Wave File(*.wav)|*.wav|" "AVI File(*.avi)|*.avi|" "Movie File(*.mov)|*.mov|" "Media File(*.mmm)|*.mmm|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "MPEG File(*.mpeg)|*.mpe
44、g|" "Flv File(*.flv)|*.flv|" "WMV File(*.wmv)|*.wmv|" "All File(*.*)|*.*| "/文件類型過濾 CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter); / CFileDialog log(TRUE,"文件","*.wav",OFN_HIDEREADONLY,"聲音文件(*.wav)|*.wav|",NULL);if(dlg.Do
45、Modal()=IDOK)pathname=dlg.GetPathName(); GetDlgItem(IDC_EDWAVFILE)->SetWindowText(pathname);pathname.MakeUpper(); void CMP3_1Dlg:OnSet() / TODO: Add your control notification handler code here/*CString name;GetDlgItem(IDC_BTSET)->GetWindowText(name);if(name="重新設(shè)置")GetDlgItem(IDC_BTSE
46、T)->SetWindowText("設(shè)置");m_hour.EnableWindow();m_minu.EnableWindow();m_wavfile.EnableWindow();elseGetDlgItem(IDC_BTSET)->SetWindowText("重新設(shè)置");m_hour.EnableWindow(FALSE);m_minu.EnableWindow(FALSE);m_wavfile.EnableWindow(FALSE);CString sound,hour,minu,time;GetDlgItem(IDC_CMBH
47、OUR)->GetWindowText(hour);GetDlgItem(IDC_CMBMINU)->GetWindowText(minu);GetDlgItem(IDC_EDWAVFILE)->GetWindowText(sound);if(sound.IsEmpty()MessageBox("請(qǐng)選擇聲音文件","提示",MB_OK);return;if(hour.IsEmpty()MessageBox("請(qǐng)選擇聲音小時(shí)","提示",MB_OK);return;if(minu.IsEmpty()
48、MessageBox("請(qǐng)選擇聲音分鐘","提示",MB_OK);return;time.Format("%s:%s",hour,minu);strtime=time;strsound=sound;SetTimer(1,1000,NULL);/*/*系統(tǒng)定時(shí)函數(shù)*void CMP3_1Dlg:OnTimer(UINT nIDEvent) CTime tt;tt=CTime:GetCurrentTime();CString tmp=tt.Format("%H:%M");if(tmp=strtime)KillTimer
49、(1);m_player.SetUrl(pathname); void CMP3_1Dlg:OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) DWORD pos;int scrollpos;scrollpos=m_channel.GetPos();if(scrollpos<100):waveOutGetVolume(0,&pos);pos=pos&0x0000ffff|(scrollpos+50)<<8);:waveOutSetVolume(0,pos);if(scrollpos>100):waveOutGetVolume(0,&pos);pos=pos&0xffff0000|(scrollpos-50)<<24);:waveOutSetVolume(0,pos);CDialog:OnHScroll(nSBCode, nPos, pScrollBar);void CMP3_1Dlg:OnRecord() / TODO: Add yo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《診斷酶學(xué)》課件
- 《計(jì)算機(jī)視覺實(shí)驗(yàn)》課件
- 【8物(人)期末】淮北市2023-2024學(xué)年八年級(jí)上學(xué)期1月期末物理試題
- 【培訓(xùn)課件】質(zhì)量管理
- 濟(jì)南大學(xué)分析化學(xué)課件配位滴定
- 山東高考報(bào)告范文模板
- 《數(shù)字電子電路技術(shù)》課件
- 《電工電子技術(shù)》課件-第5章
- 《銀行新員工培訓(xùn)》課件
- 病歷書寫課件:病案書寫如何適應(yīng)新形勢(shì)
- 高中語文-《桂枝香金陵懷古》教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 《養(yǎng)成良好的學(xué)習(xí)習(xí)慣》主題班會(huì)教學(xué)反思3篇
- 山東師范大學(xué)《計(jì)算機(jī)基礎(chǔ)》期末考試復(fù)習(xí)題及參考答案
- 2023年內(nèi)蒙古自治區(qū)鄉(xiāng)村醫(yī)生招聘筆試模擬試題及答案解析
- 刑事訴訟法智慧樹知到答案章節(jié)測(cè)試2023年山東建筑大學(xué)
- 年產(chǎn)1000萬件日用陶瓷陶瓷廠工藝設(shè)計(jì)
- 新能源汽車概論試題庫及答案
- 城管部門廉潔教育PPT廉潔清風(fēng)進(jìn)城管精華心靈促發(fā)展PPTPPT課件(帶內(nèi)容)
- 年會(huì)小品劇本 搞笑年會(huì)小品劇本;過年
- 小學(xué)廉政教育讀本校本教材
- 2022專精特新小巨人企業(yè)發(fā)展報(bào)告
評(píng)論
0/150
提交評(píng)論