【正文】
示一年的第一周。有效的命名表達式或用戶自定義格式表達式。 Format(CStr(doubleTime Mod 60), 00)Format(expression[, format[, firstdayofweek[, firstweekofyear]]])Expression 必要參數,任何有效的表達式。 //獲取文件物理路徑playMediaFile() //啟動播放媒體播放時間顯示,Duration是一個Double型變量,需要將其轉化為字符串進行顯示,效果如圖具體實現如下:strTime = Format(CStr(doubleTime \ 60), 00) amp。在顯示對話框時捕獲錯誤,以此檢測是否按了“取消”按鈕。選定文件后可用 FileName 屬性獲取選定文件的名稱。每個description | filter 設置間必須用管道符號分隔 (|)。可用下列格式設置 Filter 屬性:description1 | filter1 | description2 | filter2...Description 是列表框中顯示的字符串——例如,Text Files (*.txt)。運行時選定文件并關閉對話框后,可用 FileName 屬性獲取選定的文件名。CommonDialog 控件可以顯示如下常用對話框:“打開”、“另存為”、“顏色”、“字體”、“打印”顯示“打開”對話框有了“打開”對話框就可指定驅動器、目錄、文件擴展名和文件名。控件顯示的對話由控件的方法決定。為了用該控件創(chuàng)建對話框, 在 Microsoft Windows \System 目錄下。下面主要結合其他三個主要窗體主要功能的設計與實現進行論述。 )//加載系統(tǒng)基本狀態(tài)信息文件Dim root As IXMLDOMElement //XML文件根節(jié)點Set root = //根節(jié)點賦值Dim node As IXMLDOMNode //定義子節(jié)點For Each node In //循環(huán)讀取各個子節(jié)點進行狀態(tài)設置 Select Case Case Player //設置狀態(tài)信息操作 End SelectNext…… (filePath)//啟動播放 功能窗體區(qū)功能窗體模塊包含五個窗體:主播放窗體、媒體列表窗體、歌詞顯示窗體、迷你播放窗體、媒體文件信息窗體。具體實現如下:Call loadXmlSkin(orange) //加載皮膚文件On Error GoTo errorSet mpXml = New DOMDocumentCall ( amp。該函數核心實現如下:If (strNodeName) Is Nothing Then//若不存在,新建節(jié)點賦值保存 Dim newNode As IXMLDOMNodeSet newNode = (strNodeName) newNode Set newAttribute = (strNodeName).(value) = strTemp (newAttribute) strPSXMLElse (strNodeName).(value).Text = strTemp strPSXMLEnd If系統(tǒng)函數入口是系統(tǒng)運行的根基點,系統(tǒng)運行首先運行入口函數。Private Sub editNodeValue(strNodeName As String, node As IXMLDOMNode, strTemp As String, strPSXML As String)在node節(jié)點下保存系統(tǒng)狀態(tài)信息,若存在節(jié)點,更新其值即可;若不存在,在node節(jié)點下新建節(jié)點進行賦值,保存退出即可。Public Function GetMp3Tag(FName As String) As mp3Tag獲取MP3格式的文件信息,FName為MP3文件的物理路徑,返回值為自定義的結構類型,該結構類型用來存儲MP3文件的信息,其定義如下:Public Type mp3Tag Artist As String //存儲歌手信息 Album As String //存儲唱片專輯信息 Title As String //存儲標題信息 Year As String //存儲年代信息 Comments As String //存儲備注信息 Genre As Integer //存儲音樂風格序列End TypeGlobal mp3Infor As mp3Tag //聲明一個該結構變量具體獲取文件信息的方式如下:Open “文件路徑” For Binary Access Read As FileNum//以二進制形式打開文件Seek FileNum, LOF(FileNum) 127 //把文件指針移動到MP3信息處strInput = Space(3)Get FileNum, , strInputIf strInput TAG Then //如果沒有發(fā)現信息標識,就關閉文件 Close FileNum exitEnd IfstrInput = Space(30)Get FileNum, , strInputTitle = Trim(strInput) //讀取文件詳細信息Close FileNum如前面所提到的,退出系統(tǒng)時需要保存當前系統(tǒng)狀態(tài)信息,這里用saveSettings函數實現。讀取MP3文件信息可以使用戶直接的了解文件的相關說明信息。 If num = index Then Line Input 1, “播放文件路徑”//讀入一行數據并將其賦予某變量。Dim childNode As IXMLDOMNodeFor Each childNode In //遍歷根接點所有子接點 Select Case //設置操作 End SelectNext媒體列表播放主要是通過讀取列表文件中媒體文件的物理路徑進行播放,得到文件物理路徑實現的關鍵所在。狀態(tài)信息存儲在系統(tǒng)設置XML文件里面,通過loadPlayerSettings函數進行讀取。播放器啟動后,需要加載系統(tǒng)的基本狀態(tài)。其核心處理就是讀取皮膚XML文件,loadXmlSkin為該處理的關鍵函數。對窗體來說,皮膚就是皮膚文件,它由一組圖片和包含圖片信息的XML文件組成。dwMessage:為消息設置值,它可以是以下的常數值:0、2;NIM_ADD = 0 //加入圖標到系統(tǒng)狀態(tài)欄中NIM_MODIFY = 1 //修改系統(tǒng)狀態(tài)欄中的圖標NIM_DELETE = 2 //刪除系統(tǒng)狀態(tài)欄中的圖標LpData:用以傳入NOTIFYICONDATA數據結構變量,其結構如下所示:Type NOTIFYICONDATA cbSize As Long //需填入NOTIFYICONDATA數據結構的長度 HWnd As Long //設置成窗口的句柄 Uid As Long //為圖標所設置的ID值 UFlags As Long //設置uCallbackMessage,hIcon,szTip是否有效 UCallbackMessage As Long //消息編號 HIcon As Long //顯示在狀態(tài)欄上的圖標 SzTip As String * 64//提示信息End Type 基本播放處理模塊該模塊主要是用戶自定義的接口成員,是基層的功能函數接口,供上層模塊使用。此功能的實現主要用到Shell_NotifyIcon函數,最小化時,系統(tǒng)主窗體隱藏,托盤區(qū)域添加該系統(tǒng)圖標;雙擊系統(tǒng)圖標,主窗體顯示,通知托盤刪除該系統(tǒng)圖標。HA1 Public Const HTCAPTION = 2//設置消息常量值SendMessage , WM_NCLBUTTONDOWN, HTCAPTION, 0amp。IParam:指定附加的消息指定信息。wMsg:指定被發(fā)送的消息。如果此參數為HWND_BROADCAST,則消息將被發(fā)送到系統(tǒng)中所有頂層窗口,包括無效或不可見的非自身擁有的窗口、被覆蓋的窗口和彈出式窗口,但消息不被發(fā)送到子窗口。Function SendMessage Lib user32 Alias SendMessageA (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long該函數主要功能:該函數將指定的消息發(fā)送到一個或多個窗口,為指定的窗口調用窗口程序,直到窗口程序處理完消息再返回。這里就需要使用SendMessage函數。圖51 媒體列表窗體切割前效果圖 圖52 媒體列表窗體切割后效果圖為了方便用戶使用,要求點擊窗體任何“不觸發(fā)事件”的區(qū)域實現窗體隨鼠標拖動。Hwnd:要設置區(qū)域的窗口;hRgn:將要設置的區(qū)域句柄,一旦設置了該區(qū)域,就不能使用或修改該區(qū)域句柄,也不要刪除它;bRedraw:若為TRUE,則立即重畫窗口。本函數允許您放棄該區(qū)域。Function SetWindow