一、activex控件概述
activex是一個microsoft的術語,它指的是一組包括控件、dll、active文檔的組件,通常以動態鏈接庫的形式存在。
activex控件的數據輸入和函數功能的執行必須通過容器,因此,activex控件必須具備如下性能機制。
1)屬性和方法:activex控件必須提供屬性的名稱、方法的名稱及參數,以便容器可以存取和改變activex控件的屬性參數。
2)事件:通知容器在activex控件發生的事件,如屬性參數的改變、用戶的單擊、雙擊動作等。
3)存儲:容器由這項機制通知activex控件存儲和提取有關信息數據。activex控件只需在windows的registry數據庫中注冊后,就可以像其他window應用程序一樣發揮各自的功能。
二、注冊activex控件的方法
使用activex控件之前必須實現注冊,否則會出現錯誤,注冊的方法有兩種。
1)在window中注冊activxe控件:在windows的system文件夾下有一個regsvr32.exe的程序,它就是windows自帶的activex注冊和反注冊工具。利用它也能夠非常方便地注冊activex控件,選擇【開始】菜單→單擊【運行】菜單項→注冊/卸載控件命令如表5-3所示。
表5-3 注冊命令
regsvr32 <activex控件文件名> | 注冊指定的activex控件,activex控件的后綴為(*.ocx) |
regsvr32 /u <activex控件文件名> | 解除某一activex控件的注冊 |
例如,要注冊一個amovie.ocx控件,則輸入regsvr32.exe amovie.ocx即可,要反注冊它時只需使用regsvr32.exe /u amovie.ocx。
2)除了手動注冊activex控件外,大部分情況下使用函數來實現activex控件的注冊,因為使用函數來注冊activex控件是很簡單的。我們使用的函數就是在“xtra activex”系統函數分類中的activexcontrolregister()函數,格式為:
activexcontrolregister("filename")
我們以flash提供的“swflash.ocx”為例,注冊語句為:
activexcontrolregister("c:/windows/system/m
acromed/flash/swflash.ocx")
如果把swflash.ocx拷貝到程序目錄下,則可以使用:
result:=activexcontrolregister(filelocation^"swflas
h.ocx")
如果注冊成功,則函數返回值為-1,否則返回值為0。
如果要解除對此控件的注冊,可以使用:
activexcontrolunregister("c:/windows/system/
macromed/flash/swflash.ocx")
如果把swflash.ocx拷貝到程序目錄下,則可以使用:
result:=activexcontrolunregister(filelocation^"swfl
ash.ocx")
如果解除注冊成功,則函數返回值為-1,否則返回值為0。
當我們在程序中使用了一個新控件,而在用戶系統中運行的時候,無法保證該控件已經在用戶系統中注冊,這時我們就需要一個功能模塊,用于檢測在用戶系統中,該控件是否已經注冊,如果沒有注冊,則自動在用戶系統中進行注冊。
這個功能我們同樣可以用authorware的系統函數來實現。用于檢測一個activex控件已經在系統中注冊的函數是否是:activexcontrolquery ("classid")。
其中classid為activex控件的id標識號,每一個activex控件在windows系統中都有惟一的32位的id標識號,我們必須先獲得這個id標識號,才能使用該函數檢測與此classid對應的activex控件是否已經注冊。
在插入activex控件后,打開其屬性對話框。在其屬性對話框中單擊“url”按鈕,打開activex控件的url屬性對話框,如圖5-3所示。
圖5-3 activex控件的url屬性對話框
即可以查看該activex控件的classid,單擊【copy】按鈕即可將此classid復制到剪貼板中。比如shockwave flash object控件的classid就是:{d27cdb6e-ae6d-11cf-96b8-444553540000}。
獲得了activex控件的classid,則檢測語句如下:
result:=activexcontrolquery("{d27cdb6e-ae6d-1
1cf-96b8-444553540000}")
如果控件已經在系統中注冊,則函數返回值為-1,否則返回值為0。
將需要注冊的控件文件(ocx)復制到程序文件目錄下。首先檢測用戶的系統是否支持安裝activex,然后檢測控件是否已經注冊,方法是判斷result的值是-1還是0,再決定是否要注冊。
一、導入*.rm文件的前提
在本地硬盤上必須安裝有realplay播放器,也可以在程序中加入注冊activex控件的程序,如果控件未安裝則提示用戶安裝,realplay播放程序在網上都可以下載到。
二、導入*.rm文件的步驟
1)新建一個名為rm.a7p文件,選擇【插入】→【控件】→【activex】菜單,在出現的對話框選擇realplay g2 control控件,單擊【確定】按鈕。
2)在出現的對話框中設置控件的屬性。
auto start:true,導入*.rm文件后自動播放。
controle:imagewindows,all,在展示窗中出現視頻窗口和所有播放控制面板。
設置完畢單擊【確定】按鈕。
3)把控件命名為"rm"。然后在控件的下面加入一個名為“第一首”的計算圖標。在“第一首”計算圖標中輸入靈下內容:
--setspriteproperty(@"activex", #open, true)
--setspriteproperty(@"activex",#autostart,true)
setspriteproperty(@"rm", #source, "2003心愛.rm")
callsprite(@"rm", #doplaypause)
4)注意,使用相對路徑時,其中的“2003心愛.rm”文件和源文件必須在同一文件夾中。
5)controls可設置的屬性有以下幾個。
positionslider(出現進度條);
statusfield(出現狀態欄);
volumeslider(出現音量控制面板);
imagewindow(出現視頻窗口);
statusbar(出現更加詳細的狀態窗口);
controlpanel(出現播放控制欄)。
三、控制realplay g2 control控件的主要方法,如表5-4所示。
表5-4 控件介紹
調用方法函數的格式 | 功 能 |
callsprite(@"real",#doplaypause) | 播放/暫停*.rm文件 |
callsprite(@"real",#dostop) | 停止播放*.rm文件 |
callsprite(@"real",#aboutbox) | 調出“關于”對話框 |
callsprite(@"real",#editpreferences) |
|
callsprite(@"real",#hideshowstatistics) |
|
四、流程圖如圖5-4所示。
圖5-4 播放 *.rm文件流程圖
其中,在“下一首”計算圖標中輸入如下內容:
setspriteproperty(@"rm", #open, true)
--setspriteproperty(@"activex",#autostart,true)
setspriteproperty(@"rm", #source, "a.rm")
callsprite(@"rm", #doplaypause)
在程序運行時,單擊“下一首”按鈕則播放“a.rm”。在“退出”計算圖標中輸入“quit()”。
新聞熱點
疑難解答