教程分類
教程瀏覽排行

Authorware入門教程之開發多媒體課件的經驗

  用VB程序做主框架來調用Authorware程序,當整個東西很大的時候, 一般不會做成一個文件,尤其對于多媒體課件來說, 如果能把各個章節、模塊分成幾個獨立的文件,那是最好的。然而如果單單用Authorware的話,總不能盡如人意的做到這一點。盡管可以用JumpFile、JumpOut等等函數,也可以用庫將資源獨立出來,但是在考慮總體結構的時候,總是存在一些問題。銜接不夠緊密,不能使用公共的模塊,幾個文件相互通訊困難,而且當框架功能比較復雜時,Authorware便顯的能力不足了。

  我在用Authorware做了一段框架之后,想到了一個方法可以用VB(其它的應該也可以,只不過VB簡單一些而已)來控制我的Authorware程序。我將這個方法用到我的課件中,實踐證明是可行的。

  這兒我簡要的說一下原理,如果您想進一步了解的話請到166.111.26.24/YeyaSrc下載原程序。

  原理:

  1.在VB程序里可以通過發送鍵盤或鼠標消息來激活Authorware程序中的交互。比如:在Authorware中定義一個永久的熱區交互,同時設置熱鍵為F12,那么,在VB程序中先用SetFocus將輸入聚焦定位到Authorware窗口(假設已經知道了Authorware窗口的句柄,如何得到句柄下面進一步討論),然后用PostMessage(或者SendMessage)給它發送一個F12的KeyDown消息。

  2.同樣Authorware程序也可以給VB程序發消息,讓它響應。(根據我的試驗,用MouseDown消息更好一些,可以發送0,0坐標,甚至負值的坐標的MouseDown消息,總之是用戶不可能點到的地方,在VB程序的Form_MouseDown事件中再判斷一下坐標。)

  3.如何傳遞參數。VB要控制Authorware程序作動作必然要傳遞一些參數(當然你可以指定F11翻到下一頁,但是要翻到第5頁怎么辦?)。

  應用程序之間傳遞參數可以用DDE,但是這太復雜了。我想到的一個簡單的方法是利用dll的全局變量。dll有自己的數據段,我們可以通過引出函數來實現各個程序對dll全局數據的訪問。一個簡單的例子如下:

  int g_iMsg;     //定義一個全局變量。

  //通過這個函數設置g_iMsg的值。

  extern "C" void FAR PASCAL _expert SetMsg(int val)

  {

  g_iMsg=val

  }

  //通過這個函數讀取g_iMsg的值。

  extern "C" int FAR PASCAL _expert GetMsg()

  {

  return g_iMsg

  }

  這樣兩個應用程序便可以通過同一個dll來傳遞參數-一個用SetMsg()給g_iMsg賦值,另一個用GetMsg()讀出這個值。

 。▽τ趥鬟f字符串要復雜一些,但應該也是可以的。)

  4.有了傳遞參數的方法之后,那么用VB程序啟動Authorware程序之前,先在dll中設置初始化的消息號、VB窗口句柄等等參數;然后當Authorware程序啟動,它首先到dll中讀出這些參數,(如果消息號不是初始化的消息號,說明不是由VB程序啟動)保存VB窗口句柄。然后用2中說的方法給VB發回應消息,同時傳遞自己的窗口句柄等參數。

  5.接下去,有了對方的窗口句柄之后,就可以用1、2中的方法給對方發消息,同時用3的方法傳遞參數,這樣雙方便可以響應對方的消息,并根據參數做相應的動作。

來源:不詳 發布時間:2012-4-14 18:10:34 瀏覽次數
上一篇教程:Authorware使用技巧之制作教學軟件的開發
下一篇教程:Authorware使用技巧之三維逼真山脈的表現技巧
教程評論


評論人: 驗證碼:
內 容:
相關教程
天津快乐十分结果查询