freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于mfcmp3播放器的開發(fā)與設(shè)計學(xué)士學(xué)位論文-資料下載頁

2025-06-19 18:38本頁面
  

【正文】 用mciSendString函數(shù)。 MCICommandString格式設(shè)置MCICommandString命令格式: lpszCommandlpszDevicelpszCommandFlaglpazFlag。lpszCommand是mci命令,例如open,play,stop,close等等。lpszDevice是設(shè)備名(或文件名)。例如,并用“alias”參數(shù)將其別名設(shè)為OpenFile① dimlReturnaslong②lReturn=mciExecute(“openC:\Mydoc~1\”)那么,在以后的MCICommandString中l(wèi)pszDevice參數(shù)必須指定為OpenFile。例如,關(guān)閉該文件的代碼如下:③ lReturn=mciExecute(“closeOpenFile”)如果沒有為打開的文件設(shè)定別名,則以后調(diào)用的MCICommandString中l(wèi)pszDevice參數(shù)為DOS路徑名加文件名。如下:④ dimlReturnaslong⑤ lReturn=mciExecute(“openC:\Mydocu~1\”)⑥ lReturn=mciExecute(“closeC:\Mydocu~1\”)從這里可以看出,設(shè)定別名的好處是減少了代碼的輸入。LpszCommandFlag是mci命令的參數(shù)。如上代碼②,“aliasOpenFile”以及“typeMPEGVideo”就是命令“open”的參數(shù)。通常一個mci命令的參數(shù)少則幾個多則幾十個。LpazFlag可以為指定為“wait”或“notity”。如果為“wait”,那么mci命令執(zhí)行完畢后會向父窗體發(fā)送MCI_WAIT消息,“notity”則發(fā)送MCI_NOTIFY消息。值得說明的是,dat,digitalvideo,other,overlay,scanner,sequencer,vcr,videodisc,waveaudio十種(注意:??梢杂靡韵麓a獲得已打開的文件類型: lReturn=mciSendString(“capabilitylpszDevicedevicetype”,sReturn,32,0))。至于哪一類設(shè)備支持哪些參數(shù),可在MSDN中查找關(guān)鍵字“MCICommandStrings”,選中所列出的命令,在其中的HTML幫助文檔中通常會有一個表格說明哪些設(shè)備支持哪些參數(shù)。 主要實現(xiàn)原理及程序 文檔處理文檔處理原理如圖53所示。圖53 文檔處理主要實現(xiàn)代碼如下所示。void CMusicPlayerDlg::OnBnClickedBtAdd()//添加歌曲按鈕{ // TODO: 在此添加控件通知處理程序代碼 CFileDialog dlgFile(TRUE,NULL,NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT| OFN_ALLOWMULTISELECT|OFN_EXPLORER,//OFN_ALLOWMULTISELECT允許選擇多個文件 Allfiles|*.mp3。*.wma。*.wav|MP3(*.MP3)|*.mp3|WMA(*.wma)|*.wma||, NULL)。 if( m_strLilePath != ) = m_strLilePath。 // = OFN_PATHMUSTEXIST。 CString strMessage。 int nModal = (int)()。 主界面實現(xiàn)主界面設(shè)計對照如圖54所示。圖54 主界面設(shè)計對照圖根據(jù)上圖設(shè)計主界面,然后將主界面與界面圖鏈接。主要實現(xiàn)代碼如下。BOOL CMusicPlayerDlg::OnInitDialog(){ CSkinDialog::OnInitDialog()。 char strServerPath[MAX_PATH_DOUBLE] = {0}。 if(GetModuleFileName(NULL, strServerPath, MAX_PATH) != 0) { char drive[MAX_PATH_DOUBLE]。 char dir[MAX_PATH_DOUBLE]。 char file[MAX_PATH_DOUBLE]。 _splitpath( strServerPath, drive, dir, file, NULL )。 _makepath(strServerPath, drive, dir, NULL, NULL)。 } else ASSERT(FALSE)。 m_strExecPath = strServerPath。 m_strIniPath = m_strExecPath + ..\\res\\。 // 將\“關(guān)于...\”菜單項添加到系統(tǒng)菜單中。 InitList()。 DoFillRead()。 m_pDlg = new CBoxDlg(this)。 m_pDlgCreate()。 m_pDlgShowWindow(SW_HIDE)。 m_pMiniDlg = new CMiniDlg(this)。 m_pMiniDlgCreate()。 m_pMiniDlgShowWindow(SW_HIDE)。 m_pLyricDlg = new CLyricDlg(this)。 m_pLyricDlgCreate()。 m_pLyricDlgShowWindow(SW_HIDE)。 // IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。 ASSERT((IDM_ABOUTBOX amp。 0xFFF0) == IDM_ABOUTBOX)。 ASSERT(IDM_ABOUTBOX 0xF000)。 CMenu* pSysMenu = GetSystemMenu(FALSE)。 if (pSysMenu != NULL) { CString strAboutMenu。 (IDS_ABOUTBOX)。 if (!()) { pSysMenuAppendMenu(MF_SEPARATOR)。 pSysMenuAppendMenu(MF_STRING,IDM_ABOUTBOX, strAboutMenu)。 } } // 設(shè)置此對話框的圖標。當應(yīng)用程序主窗口不是對話框時,框架將自動 // 執(zhí)行此操作 SetIcon(m_hIcon, TRUE)。 // 設(shè)置大圖標 SetIcon(m_hIcon, FALSE)。 // 設(shè)置小圖標 srand( (unsigned)time( NULL ) )。//打亂時間種子 HICON hIcon。 char lpszTip[] = Music Player_簡單的愛。 HINSTANCE hInst= AfxFindResourceHandle(MAKEINTRESOURCE(IDR_MAINFRAME),RT_GROUP_ICON)。 hIcon = (HICON)LoadImage(hInst,MAKEINTRESOURCE(IDR_MAINFRAME),IMAGE_ICON,16,16,LR_DEFAULTCOLOR)。 NOTIFYICONDATA tnid。 = sizeof(NOTIFYICONDATA)。 =GetSafeHwnd()。//句柄 獲取自身句柄 = IDR_MAINFRAME。 = NIF_MESSAGE | NIF_ICON | NIF_TIP。 =WM_SYSTEMTRAY。//自定義的消息名稱 = hIcon。 if (lpszTip) lstrcpyn(, lpszTip, sizeof())。 else [0] = 39。\039。 Shell_NotifyIcon(NIM_ADD, amp。tnid)。 //調(diào)用Shell_NotifyIcon函數(shù)通過NIM_ADD向任務(wù)欄寫圖標 //釋放圖標資源 if (hIcon) DestroyIcon(hIcon)。 (1,1000,TRUE)。 //設(shè)置滑動條范圍 (300)。 //設(shè)置滑動條位置 消息處理程序中各個按鍵及打開、刪除、添加等消息處理示意如圖55所示。圖55 消息處理示意圖軟件在運行中每個動作都要得到響應(yīng),也就是每個動作都會有一個消息,通過對每個消息的處理才能保證軟件正常的工作,也就是線程的控制代碼如下。void CMusicPlayerDlg::OnBnClickedBtPlay() //播放消息處理{ GetDlgItem(IDC_BT_PLAY)ShowWindow(SW_HIDE)。 GetDlgItem(IDC_BT_STOP)ShowWindow(SW_SHOW)。 m_pMiniDlgGetDlgItem(IDC_BT_MINI_PLAY)ShowWindow(SW_HIDE)。 m_pMiniDlgGetDlgItem(IDC_BT_MINI_STOP)ShowWindow(SW_SHOW)。 if ( m_bPause ) { //Play( m_dwItemPlay )。 int pNull = 0。 //( m_dwItemPlay, → )。 ( m_dwItemPlay,0,→ )。 mciSendCommand( m_DeviceID, MCI_RESUME, MCI_NOTIFY,(DWORD)(LPVOID)amp。pNull )。 m_nTimer = SetTimer( 1, 1000, NULL )。 m_dwResumeTime = ::GetTickCount()。 for ( int i = 0。 i LYRIC_LINE_MAX * LYRIC_LINE_WIDTH。 i ++ ) { [i] += (m_dwResumeTime m_dwPauseTime) / 10。 } if ( m_bHasLyric ) { SetTimer( 3, 10, NULL )。 } } else { DWORD dwLine = ()。 Play( dwLine )。 } m_bPause = FALSE。 //( TRUE )。}void CMusicPlayerDlg::OnBnClickedBtStop() //停止消息處理{ GetDlgItem(IDC_BT_STOP)ShowWindow(SW_HIDE)。 GetDlgItem(IDC_BT_PLAY)ShowWindow(SW_SHOW)。 m_pMiniDlgGetDlgItem(IDC_BT_MINI_STOP)ShowWindow(SW_HIDE)。 m_pMiniDlgGetDlgItem(IDC_BT_MINI_PLAY)ShowWindow(SW_SHOW)。 KillTimer(m_nTimer)。 int pNull = 0。 mciSendCommand( m_DeviceID ,MCI_PAUSE ,MCI_NOTIFY, (DWORD)(LPVOID)amp。pNull )。 //Stop()。 ( m_dwItemPlay,0,|| )。 m_dwPauseTime = ::GetTickCount()。 KillTimer( 3 )。 m_bPause = TRUE。}6 系統(tǒng)分析與測試主界面共有12個按鈕,分別與第5章的界面設(shè)置對應(yīng)依次為:mini模式切換、最小化、關(guān)閉、上一首、播放、暫停、下一首、上移、下移、顯示歌詞、音量控制條、播放進度控制條,每個按鈕的功能都已實現(xiàn)。 系統(tǒng)界面與控制設(shè)置 操作界面設(shè)置點擊播放按鈕可以打開可播放的文件;上方進度條控制是控制音量大小,調(diào)用操作系統(tǒng)音量控制器來控制聲音大小;下方進度條是顯示并控制音樂文件的播放進度。播放控制包括播放、暫停、上一首、下一首;上下兩個箭頭按鈕可以改變歌曲的播放位置,如圖61所示。 圖61 播放主界面文件播放、暫停下方按鈕實現(xiàn)的是文件的添加、刪除以及文件的播放模式,可以選中列表中刪除不需要的曲目,不影響其他曲目的正常播放,也可以添加新文件。如圖62所示。圖62 主界面曲目添加、刪除 打開文件單擊打開按鈕,調(diào)用系統(tǒng)文件打開界面可以選擇不同的文件夾打開。對不支持的文件不會顯示,顯示的都能夠播放,此播放器支持mpwma兩種音樂格式。如圖63所示。圖63 文件打開主頁面 列表與控制雙擊列表中曲目可以播放,同時可以用DEL刪除單個曲目,單個曲目的刪除不會影響正在播放的曲目,添加按鈕可以單曲添加,也可以選中多個同時添加,不支持文件夾添加方式,如圖64所示。 加載默認曲目 添加曲目 刪除曲目圖64 文件添加、刪除 除了了對文件刪除、添加操作外,也可以對播放列表進行上移、下移操作,改變文件的播放順序。如圖65所示 加載初始曲目 上移第一首至頂 下移第一首至底圖65文件上移、下移操作 循環(huán)播放控制播放器的循環(huán)播放那個控制同時支持四種循環(huán)播放模式,分別是單曲循環(huán)、順序播放、列表循環(huán)、隨機播放。如圖66所示。
點擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1