小弟的做法是这样的,不知道是否满意,谢谢.
用BCB来建立一个包含窗体的DLL(包含Form),然后在EXE文件中对该DLL动态的载入.
首先在BCB环境中创建一个DLL工程,存盘为DLL.bpr和DLLMain.hpp(不需要修改其中的代码)
新建一个窗体(单击工具栏上的New Form按钮),这相当于在工程中添加一个窗体(将窗体的名字改为frmAbout),我是在窗体上放了一幅图片^_^,存盘为About.cpp和About.h
在DLL中将这个窗体输出,以供外部模块调用,为此要给该DLL增加相应的输出函数,在主菜单中选择File---New---Unit,将这个新生成的单元文件存盘为:DLLFunc.h和DLLFunc.hpp.
现在就要在DLL中添加内容了: #include
#pragma hdrstop #include "DLLFunc.h"
#include "About.h" //这个头文件要添加哦 //--------------------------------------------------------------------------- void __export ShowAbout() //静态
{
frmAbout = new TfrmAbout(Application);
frmAbout->ShowModal();
delete frmAbout;
} extern "C" void __export AnotherAbout() //动态
{
frmAbout = new TfrmAbout(Application);
frmAbout->ShowModal();
delete frmAbout;
}
#pragma package(smart_init) 而在DLLFunc.h中应把ShowAbout()函数加上 #ifndef DLLFuncH
#define DLLFuncH
//---------------------------------------------------------------------------
void __export ShowAbout(); //要把它加上
#endif 好,现在把DLL的编译一下(快捷键是Ctrl F9 ^_^),DLL的工作是做完了,现在应该开始调用它了
新建一个工程,然后在窗体上添加两个Button,来分别实现静态调用和动态调用DLL中的窗体. #include
#pragma hdrstop #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
#include "DLLFunc.h" //这个按钮的作用就是静态调用
ShowAbout();
}
//--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender)
{
//加载DLL
HINSTANCE ins;
ins = LoadLibrary("DLL.dll");
if(ins == NULL)
throw "不能载入DLL,请仔细观察一下,看DLL是否在当前的目录及系统目录下!"; //加载函数
FARPROC proc;
proc = GetProcAddress(ins,"_AnotherAbout");
if(proc == NULL)
{
FreeLibrary(ins);
throw "不能得到进程的地址!";
} proc(); if(!FreeLibrary(ins))
{
throw "不能释放!";
}
}
好了,现在就完成了,我的环境为: Win2000 Server SP3 BCB5 肯定有不足之处,请大大们指出,谢谢!!! 人生在勤,不索何获?
------
人生在勤,不索何获?