C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[7214] ......................
강현욱 [mortalpain] 2131 읽음    2001-05-05 00:32
/*  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 파일이 있어야 됩니다.

왜 그런지는 자세히 보시고 생각해보세요.



+ -

관련 글 리스트
7202 [질문] Tip'N Tricks 65번 childform 을 DLL로 만들기에 대한 질문입니다.(급한건 아니구요) 원영준 2025 2001/05/04
7214     ...................... 강현욱 2131 2001/05/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.