Authorware的內(nèi)部消息接口

Authorware的內(nèi)部消息接口

ID:39464839

大小:64.00 KB

頁(yè)數(shù):7頁(yè)

時(shí)間:2019-07-03

Authorware的內(nèi)部消息接口_第1頁(yè)
Authorware的內(nèi)部消息接口_第2頁(yè)
Authorware的內(nèi)部消息接口_第3頁(yè)
Authorware的內(nèi)部消息接口_第4頁(yè)
Authorware的內(nèi)部消息接口_第5頁(yè)
資源描述:

《Authorware的內(nèi)部消息接口》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、Authorware的內(nèi)部消息接口首先的問題是:我們作的UCD常常在運(yùn)行期需要?jiǎng)?chuàng)建對(duì)象,尤其是對(duì)于象dephi這樣的開發(fā)語言來說,它從運(yùn)行到消滅的過程中完完全全是依靠創(chuàng)建對(duì)象來實(shí)現(xiàn)的。在dephi程序中,我們無需擔(dān)心創(chuàng)建的對(duì)象會(huì)因?yàn)闊o法及時(shí)消滅而出現(xiàn)非法操作,除非是在運(yùn)行期動(dòng)態(tài)創(chuàng)建的對(duì)象。當(dāng)我們關(guān)閉一個(gè)程序時(shí),dephi會(huì)自動(dòng)從內(nèi)存中釋放該對(duì)象所占內(nèi)存空間,不會(huì)導(dǎo)致該內(nèi)寸會(huì)造成永久性丟失。但是如果把對(duì)象編譯進(jìn)dll程序中,對(duì)象就一定是動(dòng)態(tài)創(chuàng)建的,必須在程序退出前釋放該對(duì)象,否則會(huì)出現(xiàn)非法操作的標(biāo)示。某個(gè)有名的UCD中的MP3播放

2、函數(shù)就存在這樣的問題:必須要求用戶執(zhí)行釋放對(duì)象的函數(shù)才能正常退出,如果用戶是使用windows窗口的系統(tǒng)菜單退出的話,則非法操作不可避免,從另一方面來說,一個(gè)好的軟件是應(yīng)該充分考慮到用戶操作過程中可能出現(xiàn)的種種問題,我們只能給他們提供方便而不是給他們添加麻煩,對(duì)于一個(gè)商業(yè)化的軟件這是基本原則?,F(xiàn)在的問題是:我們?nèi)绾沃烙脩羰裁磿r(shí)候關(guān)閉程序,也就是需要抓住釋放對(duì)象的機(jī)會(huì)。當(dāng)然,制作一個(gè)系統(tǒng)鉤子函數(shù)能夠解決這個(gè)問題。然而,authorware同樣給了程序員一個(gè)機(jī)會(huì),這就是authorware中的對(duì)象消息。要使我們的對(duì)象能夠接收aut

3、horware的內(nèi)部消息,我們第一步就需要把我們的對(duì)象加入到authorware的顯示對(duì)象列表中去。Authorware的顯示對(duì)象列表是個(gè)抽象的概念,它向每個(gè)登記到列表中的對(duì)象發(fā)布消息,我們就可以根據(jù)具體的消息來處理。加入對(duì)象到顯示列表的命令是通過windowsapi函數(shù)sendmessage來實(shí)現(xiàn)的,函數(shù)描述如下:id=SendMessage(pwHandle,APWC_POST,0,lpPostPB)參數(shù)描述pwHandleAuthorware窗口句柄lpPostPB指向一個(gè)APWC_POSTPB參數(shù)塊的遠(yuǎn)指針APWC_PO

4、ST這條消息就是告訴authorware我要加入一個(gè)對(duì)象。(其值為常數(shù):$6000)返回值>0:返回該對(duì)象的唯一標(biāo)示號(hào).0:無法加載對(duì)象過程.-1在dll中的對(duì)象過程未找到.-2:非法內(nèi)存.-3:參數(shù)錯(cuò)誤.lpPostPB變量結(jié)構(gòu)描述如下:typeAPWC_POSTPB=recordsize:Word;//該結(jié)構(gòu)的長(zhǎng)度dll_ptr:PChar;//加載的dll文件名稱function_ptr:PChar;//對(duì)象過程函數(shù)名稱rect:TRECT;//對(duì)象接收消息的區(qū)域port:Integer;//接收消息方式data_ptr:

5、longint;//對(duì)象攜帶私有數(shù)據(jù)結(jié)構(gòu)指針data_size:Word;//對(duì)象攜帶私有數(shù)據(jù)長(zhǎng)度name_ptr:PChar;//對(duì)象變量名end{APWC_POSTPB};FAR=APWC_POSTPB;APWC_POSTPB_PTR=^APWC_POSTPB;說明:其中如果沒有私有數(shù)據(jù),data_ptr和data_size可設(shè)為零對(duì)象過程函數(shù)名必須是用exports導(dǎo)出的函數(shù)port可取以下三個(gè)常量之一:STATIC_PORT=0;//適用于基本固定的對(duì)象,大多數(shù)情況下選它MOTION_PORT=1;//適用于更新頻率較快

6、的對(duì)象SCREEN_PORT=2;//適用于直接畫屏的對(duì)象,如果對(duì)象是動(dòng)畫之類就選它RECT是一個(gè)在authorware的窗口內(nèi)定義的區(qū)域,如果你需要接收象鼠標(biāo)消息這樣的消息,則只在該區(qū)域你才能接收二創(chuàng)建對(duì)象過程函數(shù)在登記對(duì)象之后,authorware就向我門定義的對(duì)象過程發(fā)送消息,我們根據(jù)具體的消息,就實(shí)現(xiàn)了控制我們對(duì)象。對(duì)象過程函數(shù)格式:opjiectProc(awparam:APWN_AB;msg:NOTIFICATION_MESSAGE):Boolean;參數(shù)說明:awparam:在我們創(chuàng)建對(duì)象過程中定義的指向APWN_

7、AB結(jié)構(gòu)的指針APWN_AB結(jié)構(gòu)聲明如下:typeAPWN_AB=recordsize:Word;//該結(jié)構(gòu)的長(zhǎng)度id:LongInt;//分配給對(duì)象的唯一標(biāo)示號(hào)icon_id:Integer;//創(chuàng)建該對(duì)象所在圖標(biāo),通常是使用計(jì)算圖標(biāo)//的地方display:HWND;//authorware主窗口句柄wparam:WPARAM;//msg的第一參數(shù)lparam:LPARAM;//msg的第二參數(shù)rect:TRECT;//由APWC_POSTPB參數(shù)傳遞過來data_ptr:longint;//由APWC_POSTPB參數(shù)傳遞

8、過來data_size:Word;//由APWC_POSTPB參數(shù)傳遞過來name_ptr:PChar;//由APWC_POSTPB參數(shù)傳遞過來end{APWN_AB};FAR=APWN_AB;//聲明作為遠(yuǎn)指針調(diào)用(其實(shí)在現(xiàn)在32位操作//系統(tǒng)下已無必要,可刪

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。