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
[49994] 폼을 포함한 DLL을 VC에서 호출할때...
시몬 [] 1051 읽음    2007-07-20 15:37
안녕하세요.

폼을 포함한 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()로는 제대로 동작하는데 말이죠...
왜 이런 현상이 발생할까요???

+ -

관련 글 리스트
49994 폼을 포함한 DLL을 VC에서 호출할때... 시몬 1051 2007/07/20
50001     Re:폼을 포함한 DLL을 VC에서 호출할때... 장성호 1194 2007/07/20
50000     [자답] 헉 제가 잠시 미쳤었나 보네요 ㅡㅜ 시몬 1070 2007/07/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.