(作者:朱詩兵 2001年03月06日 16:45)
在authorware多媒體應用程序的設計過程中,有時authorware不能實現一些特殊的功能,需要使用ole技術來擴展authorware的功能。
ole對象的鏈接與嵌入是引入其它應用程序設計的對象(如文本、圖形、數字電影等)到authorware文件里的一種方法。本文介紹authorware中如何調用其它應用程序創建的ole對象,同時給出具體實例說明ole對象的應用。
ole對象的創建
打開一個ole應用程序來創建ole對象的具體步驟如下所述:
1.打開需要插入ole對象圖標的展示窗口。
可以插入ole對象的圖標有“顯示”圖標、“交互作用”圖標、“框架”圖標等,它們能夠插入圖形、文本和表格等ole對象。
2.選擇authorware中的“insert| ole object”選單選項,打開“insert object”對話框。
3.在該對話框中,顯示的是當前系統所支持的所有對象類型的列表,我們可以在該列表中選擇合適的對象類型打開創建該對象的應用程序。
如果需要直接引入對象,則可以選擇該對話框中的“從文件創建”選項,在該對話框中選擇文件,將文件中的內容直接插入到authorware中作為插入的對象。
插入后的對象,當用鼠標雙擊它時,會自動打開編輯該文件的應用程序來修改該對象。
插入的ole對象同其它引入的對象相同,用戶可以在展示窗口中改變它的位置和大小。如果想繼續修改該ole對象,用戶只需要用鼠標雙擊該ole對象,則authorware會自動打開創建該對象的應用程序進行編輯。
使用ole對象的實例
在authorware中嵌入ole對象不但可以在authorware中顯示更多類型的文件,而且還同時嵌入了生成這個ole對象的控制方法。下面給出一個具體實例,詳細介紹ole對象在authorware的使用。
1.在流程線上添加一個顯示圖標,命名為“powerpoint ole”。雙擊打開該顯示圖標,選擇“insert|ole object...”選單選項彈出的選擇ole對象對話框。這里準備直接引入powerpoint對象,選擇對話框中的“從文件創建”選項,在對話框中單擊“瀏覽(b)...”按鈕選擇文件,將文件中的內容直接插入到authorware中作為插入的對象,則把從文件創建的ole對象載入到authorware中。
單擊展示窗口中的ole對象,選擇“edit|演示文稿ole object”選單選項。在選項中上面三個選單命令是該ole對象提供的三個動作,選擇“attributes”選單命令,彈出ole對象屬性窗口。
這里一定要選擇“package as ole object”選項,作為ole對象打包;若不選擇該選項,則無法控制該ole對象。知道控制該ole對象的動作名稱后,就可以使用前面介紹過的ole處理函數來對該ole對象進行交互控制。
2.在“powerpoint ole”顯示圖標下添加一個交互圖標,命名為“ole交互”。然后在其右側放置三個計算圖標,分別命名為“放映”、“編輯”和“打開”,并且響應類型都為按鈕響應(這里按鈕屬性為默認狀態)。最后雙擊這三個計算圖標,分別輸入內容。
3.保存該文件,然后運行。此時單擊“放映”按鈕,則開始放映該powerpoint文稿,其效果與在powerpoint環境中完全一樣;單擊“編輯”按鈕,則可以編輯該powerpoint文稿;單擊“打開”按鈕,則運行powerpoint、打開該powerpoint文稿。這樣就實現了powerpoint文稿在authorware中的應用,對于其它類型的ole對象其使用過程與此類似。
小結
雖然authorware提供了對各種流行多媒體文件類型素材的導入和顯示,但對于不斷發展變化的計算機領域,這些支持的文件類型就顯得少了一些。因此在authorware中嵌入ole對象擴展了authorware多媒體功能。
authorware視頻窗口的放大
在authorware中提供有數字化電影圖標,支持avi、mpeg、flc/fli和quick time等格式,但是數字化電影圖標不能進行視頻窗口的縮放。如果再配合函數和變量,在authorware中就可以方便地實現視頻窗口的放大。
利用photoshop等軟件,按照視頻的尺寸設計好窗口和控制按鈕界面,包括:播放、停止和放大三個按鈕。
按照圖1所示建立主流程,按鈕響應為視頻播放。再建立“視頻播放”群組的內容(見圖1),視頻交互的兩個按鈕響應分別為“放大”和“停止”。
分支圖標“視頻”下有兩個分支“視頻1”和“視頻1大”,分支圖標的設置為將“branch”域設為“to calculated path”,計算表達式中輸入“false”,表示兩個分支都不經過,而直接向下走。
3. 數字化電影圖標“視頻1”和“視頻1大”均鏈接同一個視頻文件,屬性對話誆 “視頻1”中“start frame”域中為自定義變量x,“視頻1大”中“start frame”域中為自定義變量x1;“視頻1”的尺寸為原大小,而“視頻1大”為全屏(或所需尺寸)。注意:關于視頻播放尺寸的變化有一個技巧,數字化電影圖標引入視頻文件后運行,當開始播放視頻時,按“ctrl+p”暫停,用鼠標單擊視頻畫面,視頻畫面周圍將出現八個控點,用鼠標拉動其中的控點,可以改變其尺寸。同時,其位置也可以改變,尤其是可以用鍵盤上的箭頭鍵逐個點進行移動,這對于視頻畫面的精確定位特別有用。
計算圖標“視頻參數初始化”中輸入以下內容:
x:=1
x1:=1
y:=medialength@"視頻1"
mediaplay(iconid@"視頻1")
表示將“視頻1”和“視頻1大”兩個視頻的播放起始幀均設為第一幀,播放結束幀均為視頻的長度,然后開始播放原尺寸的“視頻1”。
視頻交互中的放大響應群組中的內容見圖2。計算圖標“放大”中輸入以下內容:
x1:=mediaposition@"視頻1"
eraseicon(iconid@"視頻1")
mediaplay(iconid@"視頻1大")
表示將“視頻1”的當前幀設為“視頻1大”的播放起始幀,擦除“視頻1”之后再播放“視頻1大”。
“縮小”交互圖標下的“縮小響應”設為“hot object”響應類型,即單擊“視頻1”全屏畫面后,使用原尺寸播放?!翱s小響應”中的內容如下:
x:=mediaposition@"視頻1大"
eraseicon(iconid@"視頻1大")
mediaplay(iconid@"視頻1")
“停止”中的內容為:eraseicon(iconid@"視頻1")。
利用以上的思路,可以進一步實現標準的媒體播放器功能。
用vb6實現隱藏和顯示“程序”選單
(中國計算機報 王永耀 2001年10月23日 11:44)
很多系統安全軟件如“超級兔子”、“系統優化大師”等,都有一項很酷的功能,就是能夠自由隱藏和顯示“開始”選單中“程序”各項的功能。假如在我們的程序中也能實現這樣的功能,是不是會為程序添色不少呢?其實,我們用vb可以輕松實現這樣的功能。
實現方法
其中最重要的一點就是:在win 98中,“程序”項的顯示和隱藏可以通過改變c:/windows/start menu/programs(注:這里假設您的windows安裝在c盤)文件夾下各文件或文件夾的屬性來實現。要隱藏“程序”中的項目,只要相應的文件或文件夾屬性設成“隱藏”;要顯示項目,也只要去掉相應對象的“隱藏”屬性即可。那么,怎樣控制文件的屬性呢?在vb中,api函數有很重要的作用,可以實現很多強大的功能。其中,getfileattributes函數可以得到文件的屬性、setfileattributes函數可以更改文件屬性、getwindowsdirectory函數可以得到系統目錄,有了這三個api“法寶”坐鎮,程序實現就很容易了。當程序啟動時調用getwindowsdirectory函數得到系統目錄的路徑,再用dir函數在一個列表框中列出“系統目錄/start menu/programs ”目錄下的所有文件和文件夾,并調用getfileattributes函數來獲得各文件和文件夾的屬性,若屬性為“隱藏”,就把相應的列表項勾選(表示此項已隱藏)。在列表框中勾選你想要隱藏的項目,接著調用setfileattributes函數,將勾選項相應的文件或文件夾的屬性改為“隱藏”(表示將其隱藏),去掉未勾選項相應的文件或文件夾的“隱藏”屬性。這樣,一切就搞定了。
程序代碼及講解
首先新建一個project工程,并在form1中建立一個列表框list1,其style屬性為:checkbox(復選框式樣);四個命令按鈕:command1、command2、command3和command4。
界面布局如圖所示:
具體程序代碼如下:
'declarations部分,聲明api函數
private declare function getfileattributes lib "kernel32" alias "getfileattributesa" (byval lpfilename as string) as long
private declare function setfileattributes lib "kernel32" alias "setfileattributesa" (byval lpfilename as string, byval dwfileattributes as long) as long
private declare function getwindowsdirectory lib "kernel32" alias "getwindowsdirectorya" (byval lpbuffer as string, byval nsize as long) as long
'聲明變量
dim i as integer
dim lngpath as long
dim tmppath as string
dim strpath as string
dim strdir as string
'定義子過程1,用于顯示“程序”選單各項,并確定是否已經隱藏
sub getfileattr()
i = 0
tmppath = space(50)
lngpath = getwindowsdirectory(tmppath, len(tmppath))
strpath = left(tmppath, lngpath) && "/start menu/programs/"
'programs路徑
strdir = dir(strpath, vbdirectory + vbnormal + vbhidden + vbarchive + vbreadonly + vbsystem)
'將所有程序項目添加到列表框中
do while strdir <> ""
if strdir <> "." and strdir <> ".." then
list1.additem strdir
i = i + 1
if (getfileattributes(strpath && strdir) and vbhidden) then
'得到文件或文件夾屬性,若為隱藏則勾選
list1.selected(i - 1) = true
end if
end if
strdir = dir
loop
'下一個文件或路徑
end sub
'定義子過程2
sub setfileattr()
tmppath = space(50)
lngpath = getwindowsdirectory(tmppath, len(tmppath))
strpath = left(tmppath, lngpath) && "/start menu/programs/"
'得到“programs”路徑
for i = 0 to (list1.listcount - 1)
if list1.selected(i) = true then
'勾選則隱藏,反之則顯示
setfileattributes strpath + list1.list(i), vbhidden
else
setfileattributes strpath + list1.list(i), vbnormal
end if
next i
end sub
private sub command1_click()
call setfileattr
'調用子過程2改變文件屬性
end sub
private sub command2_click()
end
end sub
private sub command3_click()
for i = 0 to list1.listcount - 1
'全選
list1.selected(i) = true
next i
end sub
private sub command4_click()
for i = 0 to list1.listcount - 1
'全否
list1.selected(i) = false
next i
end sub
private sub form_load()
form1.caption = "隱藏和顯示程序選單"
command1.caption = "確定"
command2.caption = "退出"
command3.caption = "全選"
command4.caption = "全否"
call getfileattr
'調用子過程1,得到文件屬性并初始化列表框各項
end sub
按f5運行后,程序下的文件和文件夾會一個不漏地顯示在列表框里,再勾選幾個,按“確認”,打開“開始選單”的“程序”,剛才勾選的幾個不見了。再次運行程序,看看列表框里,是不是剛才勾選的現在依然勾選著呢?那就是告訴你,“程序”選單中已經隱藏了這些項。通過修改文件屬性還可以完成許多的功能,如管理“發送”(send to)、“收藏夾”(favorites)等,就看你如何靈活運用了
新聞熱點
疑難解答