天天看点

在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
           

继续阅读