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