|
/* DLL source file */
#include <vcl.h>
#include <windows.h>
#include "DllMDIChild.h"
#include "MDIChild.h"
#pragma hdrstop
USEFORM("MDIChild.cpp", ChildForm);
USE("DllMDIChild.h", File);
//---------------------------------------------------------------------------
TApplication* DllApp = 0;
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
return 1;
}
//---------------------------------------------------------------------------
extern "C" DLL_EXP void __stdcall ShowMDIChildForm(TApplication* mainApp)
{
if (!DllApp) {
DllApp = Application;
Application = mainApp;
}
TChildForm* child = new TChildForm(Application->MainForm);
child->Show();
}
//---------------------------------------------------------------------------
extern "C" DLL_EXP void __stdcall ResetDllApplication()
{
if (DllApp) {
Application = DllApp;
}
}
//---------------------------------------------------------------------------
/* DLL header file */
#ifdef __DLL__
#define DLL_EXP __declspec(dllexport)
#else
#define DLL_EXP __declspec(dllimport)
#endif
extern "C" DLL_EXP void __stdcall ShowMDIChildForm(TApplication* mainApp);
extern "C" DLL_EXP void __stdcall ResetDllApplication();
/* MDI parent */
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MDIParent.h"
// Child Dll header
#include "DllMDIChild.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool &CanClose)
{
ResetDllApplication();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::X1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::N2Click(TObject *Sender)
{
ShowMDIChildForm(Application);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::B1Click(TObject *Sender)
{
Previous();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::F1Click(TObject *Sender)
{
Next();
}
//---------------------------------------------------------------------------
물론 부모 프로젝트엔 자식폼이 있는 DLL 파일의 *.lib 파일이 있어야 됩니다.
왜 그런지는 자세히 보시고 생각해보세요.
|