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