|
|
個(gè)人聲明 1
我將對(duì)本人做如下修改,但是日期不能確定,所以更新的速度會(huì)很慢。
另外我下個(gè)星期后,寢室將斷網(wǎng),我會(huì)在家寫好一切,在公司通過郵件發(fā)給大家。
希望有人能配合我,并把我發(fā)給他的東西上傳這里(個(gè)人郵箱guvc@163.com),供大家學(xué)習(xí)。
(本文適合哪些讀者,補(bǔ)加)
(軟件設(shè)計(jì)式樣書,補(bǔ)加)
(軟件實(shí)現(xiàn)哪些功能,補(bǔ)加)
(如何實(shí)現(xiàn)這些功能,補(bǔ)加)
(基本框架組建----能夠?qū)崿F(xiàn)正常播放功能框架搭建,補(bǔ)加)
(輔助功能添加----同時(shí)對(duì)前期程序錯(cuò)誤和不接合處進(jìn)行修改,補(bǔ)加)
(如何實(shí)現(xiàn)并控制以及回收子線程----同時(shí)對(duì)前期程序錯(cuò)誤和不接合處進(jìn)行修改,補(bǔ)加)
(內(nèi)存泄露以及程序調(diào)試的工作,補(bǔ)加)
(軟件包裝補(bǔ)加)
如果能自己作一個(gè)音頻文件的播放器,那是什么感覺?,我感覺很爽。
最近看看幫助文檔,自己設(shè)計(jì)了款音頻播放器。基本上什么格式多能放。現(xiàn)在正在給她升級(jí),讓他真正的能什么格式多能放。
我現(xiàn)在把這個(gè)最初的版本共享給大家。
軟件設(shè)計(jì):首先我們要想到以后對(duì)軟件的設(shè)計(jì)所以有些必要的工作我們必須把它提出來單獨(dú)作。
播放功能。我把它做為一個(gè)單獨(dú)類
提示信息。我把它們定義在一個(gè)共同頭文件內(nèi)
下面作詳細(xì)介紹
首先軟件平臺(tái)選擇vc6.0基于MFC,選擇對(duì)話框模式。其他不用便,唯一需要改的一步就是在庫的選擇方面我們用靜態(tài)不用動(dòng)態(tài),否則軟件脫離自己的機(jī)器后很可能不能正常運(yùn)行。
現(xiàn)在一個(gè)大體的框架設(shè)計(jì)好了
下面就是添加一個(gè)類(一個(gè)普通類),把類命名為CPlayDevice.
然后就是給CPlayDevice添加成員變量和函數(shù)如下
private:
DWORD m_dwPlayID;
.........
成員變量盡量定義為私有。
public:
void OpenFile(CString strText);
void Play();
void Play(int index);
..........
附注:這里怎么不能添加附件啊,代碼很多的哎,我得敲到什么時(shí)候啊。。。。
這個(gè)類寫完后,會(huì)出現(xiàn)很多問題
播放模式:
播放,暫停,停止
是否支持多曲連放,還是單曲播放,在本程序中我們支持多曲連放。
還有就是設(shè)備初始化的問題。
我們把這些問題放在共同類
建立個(gè)頭文件ComData.h
#pragma once
#include "windows.h"
#define TITLE_MAIN "音頻播放器"
#define TITLE_ERROR "錯(cuò)誤"
//這樣做的好處是,當(dāng)我們?cè)谏?jí)的時(shí)候沒必要到文件內(nèi)部去逐個(gè)修改。
//我們只需在這里修改就可以
.......
#define MSG_NOFILE "設(shè)備中沒有音頻文件"
#define MSG_。。。。。
。。。
詳見原代碼
共同和類寫完后
我們開始設(shè)計(jì)框架
我在設(shè)計(jì)的時(shí)候使用的全是圖形界面。
所以在這里我稍微詳細(xì)寫點(diǎn)
至于圖片大家自己作,或則上網(wǎng)找
首先把對(duì)話框的格式修改,去掉周邊框架,只留住客戶區(qū)
添加按鈕,修改屬性,選中owner,和位圖 這樣就可以自己繪制按鈕
給按鈕添加 “控件” 變量,(便于后期編程)
然后將 所有 CButton 改為 CBitmapButton
現(xiàn)在我們要考慮程序在啟動(dòng)后,他如何繪制界面
有以下幾種情況,單擊事件,裝在歌曲文件的時(shí)候
我們?cè)趩螕裘總(gè)按鈕的時(shí)候最好從繪摁鈕,然后就是重寫窗體的onpaint 事件,具體代碼見源程序
現(xiàn)在開始組合
在窗體初始化代碼里 我們要初始化音頻設(shè)備。我把這個(gè)操作放在了播放摁鈕里面。現(xiàn)在想起來這樣不好。建議大家放在窗體初始化中
如何重硬盤中選者音樂,我們先定一個(gè)CFileDialog 類型的變量,通過這個(gè)變量來從系統(tǒng)中選者音頻文件
最后給程序做個(gè)時(shí)間事件(現(xiàn)在想起來沒有這個(gè)必要,因?yàn)闀r(shí)間事件的效率太率,而且很好內(nèi)存,個(gè)人建議是利用子線程,不過這樣我們得控制好播放速度,否則播出來的效果不是很流暢)。主要是監(jiān)視歌曲播放狀態(tài),是否播放完畢等
上面寫的我個(gè)人覺得太籠統(tǒng)。代碼實(shí)在是比較多,不愿意敲出來。見諒
改動(dòng)后補(bǔ)注:我今天只有半個(gè)小時(shí)時(shí)間,我只籠統(tǒng)地看了下,說句實(shí)在話,看了這篇文章,大家實(shí)在是學(xué)不到東西,連基本的概念多沒講清楚,我會(huì)慢慢的對(duì)其進(jìn)行修改,希望大家見諒(個(gè)人感覺這篇文章,應(yīng)該有足夠的資格加精吧,嘿嘿)
[ 本帖最后由 重新來過 于 2007-3-31 22:47 編輯 ] |
|