插件程序一旦調用了DLL窗口,窗口實例將會保持在HALL窗口的上層,因此不用擔心遮擋的問題。
容器程序的實現
1、接口函數的引入
調用DLL庫中的函數有顯式和隱式兩種方式,顯式調用更靈活,因此我們使用顯示調用。在Delphi中需要為接口函數申明函數類型,然後實例化函數類型的實例,該實例實際是一個指向函數的指針,通過指針我們可以訪問到函數並傳遞參數、獲取返回值。在單元文件的Interface部分加入函數類的申明:
type
//定義接口函數類型,接口函數來自DLL接口
TShowDLLForm = Function(AHandle:THandle; ACaption: String; AUserID:string):Boolean;stdcall;
TFreeDLLForm = Function(AHandle:THandle; ACaption: String; AUserID:string):boolean;stdcall;
顯示調用庫函數需要如下幾個步驟:
1) 載入DLL庫文件
2) 獲得函數地址
3) 執行函數
4) 釋放DLL庫
接下來我們將詳細討論這幾個步驟。