|
안녕하세요.
폼을 포함한 DLL을 만들었습니다.
Unit1.cpp파일==============================================
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
#include "Unit2.h"
#pragma argsused
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
ShowMessage("Called DllMain");
return 1;
}
extern "C" HWND __stdcall CreateAndShow()
{
TForm2* pRtn = new TForm2(NULL);
pRtn->Show();
return pRtn->Handle;
}
extern "C" void __stdcall ModifyText(HWND hwnd, const char* text)
{
((TForm2*)hwnd)->ModifyText(text);
}
Unit2.cpp파일==============================================
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm2::ModifyText(AnsiString text)
{
ShowMessage("Here! TForm2 : "+text);
Label1->Caption = text;
Label1->Refresh();
}
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Label1->Caption ="이름변경 성공";
}
위와 같이 작성하였습니다.
이걸 VC++에서 호출하는데요 CreateAndShow()함수로 폼은 제대로 생성됩니다.
그런데 ModifyText()을 호출하면...
TForm2에서 ShowMessage("Here! TForm2 : "+text);까지는 제대로 들어갑니다.
그렇지만 Label1->Caption = text; 이쪽에 들어가자 마자 DllMain()이 호출되면서 종료됩니다.
아래만든 버튼 Button1Click()로는 제대로 동작하는데 말이죠...
왜 이런 현상이 발생할까요???
|