天天看點

在DLL中包含窗體

如何在DLL中包含窗體,并将其嵌入到主視窗中指定位置?采用C++Builder6平台,并且要求達到如下目标:

1.可以随時建立DLL中的視窗或解除安裝DLL中的視窗

2.可以動态加載或解除安裝包含視窗的DLL

3.主視窗啟動時,焦點落在預設的嵌入視窗控件上

4.TSpeedButton可以響應滑鼠移動事件

5.Tab鍵僅在嵌入視窗中跳動,不會跳出到主視窗控件上

6.嵌入視窗可以使用COM控件,如TADOQuery控件

7.嵌入視窗和主視窗都可以使用VCLSkin控件換膚

8.DLL中的視窗,實作業務功能時,和平常建立的工程視窗使用完全一緻

本方案可以實作上述目标,具體步驟如下:

(1)先在建立一個DLL工程,在DLL工程中包含接口檔案IDLLObject.h,這是各個DLL中需要實作的功能,他輔助嵌入視窗處理一些來自主視窗的消息。調用的DLL的主工程視窗也需包含此檔案,主視窗會調用這些接口,建立和管理嵌入視窗。IDLLObject.h内容如下:

#ifndef IDLLControlHPP
#define IDLLControlHPP
//DLL中的基本接口類,視窗消息處理須繼承此類
#define VCLSKIN  false //是否使用VCLSkin換膚,false不使用;true使用
#include<vcl.h>
class IDLLObject
{
public:
    virtual void   __fastcall  Initialize(Forms::TApplication* AApp) = 0 ;
    virtual void   __fastcall  UNInitialize(void) = 0 ;
    virtual HANDLE __fastca
           

繼續閱讀