池研 朱軒晨 石菲
【摘要】隨著流技術(shù)的成熟和廣泛的應(yīng)用,其優(yōu)點(diǎn)我們有了深刻體會(huì)。但是,其不足之處也逐漸體現(xiàn)出來(lái)。SMIL正是針對(duì)目前流技術(shù)中的問(wèn)題而提出來(lái)的。特別是在手機(jī)彩信內(nèi)容的編制上,SMIL語(yǔ)言得到了廣泛的應(yīng)用。不過(guò)一方面,現(xiàn)有的一些SMIL編輯器并不太好用。而另一方面,我們編制的彩信新聞格式相對(duì)比較固定,這非常有利于編寫程序自動(dòng)創(chuàng)建。這篇文章就是基于上面的兩點(diǎn),應(yīng)用Office接口編程,實(shí)現(xiàn)了自動(dòng)創(chuàng)建SMIL文件的目的。
【關(guān)鍵詞】SMIL語(yǔ)言;彩信新聞;Office編程
一、引言
棗莊日?qǐng)?bào)社為適應(yīng)新興媒體的發(fā)展需要,特別是掌媒所帶來(lái)巨大沖擊的情況下,開始籌辦手機(jī)報(bào)。當(dāng)時(shí)只有編輯人員參加,后來(lái)由于省移動(dòng)公司更換了發(fā)送平臺(tái),使得原來(lái)的工作流程和方法都不再適用,而編輯人員沒能掌握新平臺(tái)的使用和制作,于是計(jì)算機(jī)工作人員也參加了進(jìn)來(lái)。
我們使用的是山東移動(dòng)168信息平臺(tái)的彩信新聞。這個(gè)平臺(tái)需要手工編制SMIL文件,這對(duì)于編輯人員來(lái)講是比較困難的,即使是計(jì)算機(jī)人員天天做同一件事也是非常繁瑣的。更何況每天必須在固定時(shí)間里發(fā)送到平臺(tái)上,這就要求我們不能用太多的時(shí)間來(lái)進(jìn)行調(diào)試,同時(shí)還要根據(jù)每條新聞的字?jǐn)?shù)計(jì)算出在手機(jī)上顯示的時(shí)間。當(dāng)然,手工制作時(shí)顯示時(shí)間的控制只能是粗略的。這就使得有些短信息顯示的時(shí)間過(guò)長(zhǎng),不方便用戶的閱讀;而有些較長(zhǎng)的信息由于顯示的時(shí)間過(guò)短,使得用戶沒有閱讀完就會(huì)自動(dòng)跳到下一條新聞。為解決以上問(wèn)題,我們使用VC++和Office編程技術(shù)編寫了一個(gè)把Word文件轉(zhuǎn)換成SMIL文件的程序,取名為WordToSmil。
二、制作流程
1.編輯Word文件
由編輯人員使用Word把每條新聞插入到空白表格中,而且必須是按照順序逐行插入,中間不準(zhǔn)有空白行,表格的最后一行必須是空白行,表示彩信新聞到此為止。使用Word編輯稿件的好處是,編輯們對(duì)Word的使用比較熟練,而且用表格來(lái)組織稿件,其條目非常清晰,也能部分實(shí)現(xiàn)彩信新聞在手機(jī)上的顯示效果。以下是我們實(shí)際編輯完成的Word文件,當(dāng)然這只是全部?jī)?nèi)容的很少一部分。
編輯完成的Word文件樣本
2.運(yùn)行WordToSmil程序
運(yùn)行WordToSmil后,屏幕上會(huì)顯示一個(gè)對(duì)話框,其中有四個(gè)按鈕和三個(gè)互斥鍵。首先打開Word文件按鈕,屏幕上會(huì)顯示一個(gè)標(biāo)準(zhǔn)的打開文件對(duì)話框,選擇上面的樣本文件。再選擇三個(gè)互斥鍵中的一個(gè),慢速意味著每條信息的顯示的時(shí)間會(huì)長(zhǎng)些,快速意味著每條信息的顯示的時(shí)間會(huì)短些,程序的缺省值是中速。最后按下生成SMIL文件按鈕,程序會(huì)自動(dòng)地把每條信息按照順序生成一個(gè)一個(gè)文本文件,同時(shí)也生成了SMIL文件。以下是自動(dòng)創(chuàng)建的SMIL文件樣本,這是在選擇了中速的情況下生成的。
3.發(fā)送到平臺(tái)
上面生成的文本文件和SMIL文件都自動(dòng)保存在你打開的Word文件目錄下,現(xiàn)在需要把這些文本文件和SMIL文件用WinZip壓縮到一個(gè)文件中。然后打開瀏覽器,登錄到山東移動(dòng)168信息平臺(tái),選擇彩信新聞,填寫必要的內(nèi)容,瀏覽選擇你剛生成的壓縮文件,發(fā)送出去即可。
三、程序的實(shí)現(xiàn)
在Office編程中經(jīng)常用到的對(duì)象有:_Application、Documents、Selection、Range等等。實(shí)現(xiàn)這些對(duì)象的Visual C++類文件需要從Office提供的幾個(gè)類型庫(kù)中導(dǎo)入。他們的位置在Office安裝路徑下的Office目錄,其中Word2000的類型庫(kù)名為Msword9.olb。
1.建立工程
首先創(chuàng)建一個(gè)MFC AppWizard(EXE)工程,名稱為WordToSmil,在向?qū)н^(guò)程中選擇生成對(duì)話框。然后通過(guò)在View菜單中,選ClassWizard,選Automation選項(xiàng)卡,選Add Class,選擇From a TypeLibrary,選中Microsoft Office 2000類型庫(kù):MSWORD9.OLB。選擇需要引入的類_Application、Documents、Range、Section、Sections、Selection。這樣我們需要的類就在msword9.h中定義了,只要包含這個(gè)頭文件就可以使用了。在WordToSmilDlg.cpp實(shí)現(xiàn)文件中加入下面幾行代碼:
#include"msword9.h";
int m_Speed=1;//這是個(gè)全局變量
CString fileName;//這也是個(gè)全局變量
2.設(shè)置對(duì)話框并添加消息處理函數(shù)
接受所有控制的缺省標(biāo)識(shí)符,設(shè)置三個(gè)互斥鍵為一組,并為互斥鍵組指定一個(gè)數(shù)據(jù)成員m_Speed。在WordToSmil.cpp實(shí)現(xiàn)文件中加入下面一行代碼:
dlg.m_Speed=1;//這是個(gè)數(shù)據(jù)成員,互斥鍵缺省值為中速
接下來(lái)為每一個(gè)控制的BN_CLICKED消息定義一個(gè)消息處理函數(shù),接受所有的缺省函數(shù)名。
3.為消息處理函數(shù)添加代碼
(一)消息處理函數(shù)OnButton1()
程序的大部分功能就是由這個(gè)函數(shù)完成的。它首先定義一些Word對(duì)象,然后啟動(dòng)Word服務(wù),實(shí)際打開Word文件,通過(guò)一個(gè)循環(huán)語(yǔ)句完成到文本文件和SMIL文件的轉(zhuǎn)換。
(二)消息處理函數(shù)OnButton2()
這個(gè)函數(shù)的功能只是獲取Word文件的路徑和文件名,實(shí)際的打開功能是由OnButton1()完成的。
(三)消息處理函數(shù)On OnRadio()
這三個(gè)函數(shù)只是完成簡(jiǎn)單的給全局變量m_Speed賦值的功能,每個(gè)函數(shù)都要調(diào)用IsDlgButtonChecked()函數(shù)以保證互斥鍵已被選擇。
【參考文獻(xiàn)】
[1]掌握Microsoft Visual C++編程,熊璋等譯,電子工業(yè)出版社
[2]專家門診Visual C++開發(fā)答疑300問(wèn),肖紅衛(wèi)編著,人民郵電出版社