|
extern "C" __declspec(dllexport) void __stdcall testfunc( TObject *pParent )
{
Form2=new TForm2(pParent );
Form2->Show();
}
다음과 같이 메인 Form 의 포인터를 넘겨줘서 Parent 처리를 해보세요..
TApplication 을 중심으로 Form 이 작동하게 되어있어서 생기는 문제 같아 보이네요...
다음 의 Form 을 Show 하는 메소드에서
void TestForm::OnClickButton( TObject *Sender )
{
// TestForm 이 메인 Form 이라면...
testfunc( this );
}
TApplication 이 static 타입의 싱글 턴 일껀데 아마;
DLL을 따로 빼면 완전 다른 TApplication 이라서 뭔가 잘 작동 안하는게 당연할지도 모르겠네요;;
라이손레종ㅎ 님이 쓰신 글 :
: 첨부파일 내용-
: 1.jpg -> DLL 에 폼을 New->폼 해서 넣었고.. 디자인된 모습입니다.
: 2.jpg -> 다른 exe에서 DLL을 동적으로 불렀고, 이것을 DLL의 Show 함수를 호출하면 이렇게 됩니다.
: 다운된거 같아요~ ..
: 설정.jpg -> 설정 해놓은 모습입니다..
:
: ---------------------------
: 이렇게 해놓았고..
: DLL 내부 함수는
:
: ------------------------------Unit1.cpp
: #include "Unit2.h"
: extern "C" __declspec(dllexport) void __stdcall testfunc()
: {
: Form2=new TForm2(NULL);
: Form2->Show();
: }
:
: ------------------------------Unit2.cpp
: void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
: {
: Action = caFree;
: }
:
: exe 는
: 로드라이브러리로 동적 로드 해서 버튼을 누르면 testfunc()함수를 호출하게 했습니다.
: 근데.. ShowModal();로 하면 아무런 문제없이 잘되지만. Show();하게 되면.. 이렇게 됩니다.
: 장성호님.. 부디 답글을 부탁 드립니다..
|