周雨彤
摘 要
計(jì)算機(jī)上的音樂(lè)播放軟件,可以方便的滿(mǎn)足人們對(duì)于音樂(lè)播放的各種功能。同時(shí),桌面小精靈程良好的人機(jī)交互體驗(yàn),得到了很多用戶(hù)的肯定和青睞。本文設(shè)計(jì)一款基于桌面小精靈的音樂(lè)播放軟件,結(jié)合音樂(lè)播放器和桌面小精靈程序的優(yōu)點(diǎn),最大限度地滿(mǎn)足人們對(duì)于音樂(lè)休閑的多樣性和便利性。
【關(guān)鍵詞】音樂(lè)播放軟件 播放器 設(shè)計(jì)
1 系統(tǒng)功能模塊設(shè)計(jì)
本軟件實(shí)現(xiàn)如下能模塊,桌面小精靈模塊,音樂(lè)播放器模塊和托盤(pán)模塊。
桌面小精靈功能模塊實(shí)現(xiàn)一個(gè)能在桌面跑動(dòng)的動(dòng)態(tài)卡通形象,使桌面小精靈能夠被用戶(hù)挪到想要的地方,拖拽時(shí),桌面小精靈動(dòng)畫(huà)不能停止,拖拽不帶重影。
音樂(lè)播放器功能模塊包括音樂(lè)播放和音樂(lè)列表兩個(gè)子模塊:
音樂(lè)播放子模塊需要實(shí)現(xiàn)以下功能:播放,暫停,停止,音量調(diào)節(jié),播放進(jìn)度調(diào)整。
音樂(lè)列表子模塊實(shí)現(xiàn):建立音樂(lè)列表,能正常取出上一首和下一首音樂(lè)開(kāi)始播放,若到達(dá)列表頭尾,則循環(huán)轉(zhuǎn)到尾頭開(kāi)始播放。顯示和儲(chǔ)存分離,音樂(lè)列表對(duì)話框能隱藏,移動(dòng)時(shí)跟隨小精靈。音樂(lè)列表接受文件拖拽,雙擊條目則可以播放該條目的音樂(lè)。
托盤(pán)功能模塊實(shí)現(xiàn):托盤(pán)圖標(biāo)可以顯示托盤(pán)消息,雙擊托盤(pán)圖標(biāo)能夠顯示已隱藏的桌面小精靈。右鍵托盤(pán)圖標(biāo)能夠彈出菜單。并且,桌面小精靈應(yīng)該始終在最前,以保障用戶(hù)能夠隨時(shí)使用。
2 系統(tǒng)功能具體實(shí)現(xiàn)
2.1 桌面精靈的實(shí)現(xiàn)原理和步驟
實(shí)現(xiàn)桌面精靈的步驟如下:
(1)獲取桌面窗口句柄:DeskDC= GetDC(GetDesktopWindow());
(2)創(chuàng)建一個(gè)內(nèi)存位圖,將桌面精靈的卡通形象存入到此位圖中,為此,可以封裝一個(gè)方法:
Void MainDlg::SavebackElfin(BKCanvas TCanvas){//內(nèi)存位圖中的畫(huà)布對(duì)象
w:integer; //畫(huà)布對(duì)象的寬度
h:integer;//畫(huà)布對(duì)象的高度
x:integer;//保存的x坐標(biāo)
y:integer;}//保存的y坐標(biāo)
(3)將卡通精靈拷貝到桌面的繪圖區(qū)域;
(4)將第二步生成的內(nèi)存位圖拷貝到桌面位置,完成一幀動(dòng)畫(huà)的顯示。循環(huán)實(shí)現(xiàn)1-4步,實(shí)現(xiàn)桌面小精靈的連續(xù)移動(dòng)畫(huà)面。
2.2 音樂(lè)播放器功能模塊的實(shí)現(xiàn)
音樂(lè)播放可以使用很多技術(shù),如playsound,MCI,DirectX等,本文采用了功能強(qiáng)大且易用的MCI( Media Control Interface)媒體控制接口。MCI是向基于Windows操作系統(tǒng)的應(yīng)用程序,它提供了高層次的控制媒體設(shè)備接口的能力。本文實(shí)現(xiàn)的CDeskMP3類(lèi)對(duì)MCI的音樂(lè)播放功能進(jìn)行了封裝,實(shí)現(xiàn)了音樂(lè)播放器所需的各種功能。
class CDeskMp3
{
public:
CDeskMp3();
CDeskMp3(CString path);
void LoadMp3(CString path);
void Play();
void Play(int start);
void Play(int start,int end);
void PlayLoop();
void Pause();
void Stop();
void Replay();
void Close();
void SetVolume(int vol);
int GetPresentPos();
int GetMusicLength();
private:
DWORD dwReturn;
DWORD m_dwLength;
MCIDEVICEID m_deviceId;
bool isopened;
UINT flag;
};
2.3 托盤(pán)功能模塊的實(shí)現(xiàn)
托盤(pán)功能實(shí)現(xiàn)具體如下:托盤(pán)圖標(biāo)在主窗口中創(chuàng)建,使用托盤(pán)結(jié)構(gòu)體NOTIFYICONDATA 來(lái)創(chuàng)建對(duì)象nid;加入托盤(pán)時(shí)定義好托盤(pán)屬性:標(biāo)志位,消息名稱(chēng);加載圖標(biāo)以及托盤(pán)名,用Shell_NotifyIcon函數(shù)把托盤(pán)加入托盤(pán)區(qū);同時(shí)在托盤(pán)釋放的時(shí)候需要將托盤(pán)從托盤(pán)區(qū)刪除。
void CYourLandDlg::AddTray()
{
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage = WM_SHOWTASK;
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
tcscpy(nid.szTip, TEXT("我是一個(gè)托盤(pán)圖標(biāo)"));
Shell_NotifyIcon(NIM_ADD,&nid);
}
3 結(jié)束語(yǔ)
本文主要實(shí)現(xiàn)了一個(gè)基于桌面精靈的桌面卡通音樂(lè)播放器,將桌面精靈活潑可愛(ài)的特點(diǎn)融入音樂(lè)播放器中,使得用戶(hù)在使用音樂(lè)播放器播放音樂(lè)時(shí)更加方便并且休閑放松。
參考文獻(xiàn)
[1]綠色.活靈活現(xiàn)的桌面精靈[J].少年電腦世界,2010(02):41-42.
[2]王秀梅.Delphi制作升級(jí)精靈程序[J].黑龍江科技信息,2010(18):7-67.
[3]周淑華.多媒體播放器通用算法設(shè)計(jì)與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2016(21):93-94.
[4]陳忠.在Visual C++中使用托盤(pán)圖標(biāo)功能編寫(xiě)計(jì)算機(jī)定時(shí)關(guān)機(jī)程序[J].電腦編程技巧與維護(hù),2003(08):84-85.