동적으로 DLL 을 읽어 들이는 부분 하나.
DLL Form 에 대해 테스크바 영역에 Caption 이 표시되지 않도록 하는 부분 둘.
입니다.
구글형님! 감사합니다~ ㅎ_ㅎ;;;;
VC++ 에서 작성한 윈도우의 Handle 을 적당히 DLL 로 넘기고 DLL 을 동적으로 생성하기 이전에
DLL 의 Application 객체의 Handle 에 덮어 씌어 주면 됩니다.
지금 막 테스트 해봤는데 아주 깔끔하게 잘 되는군요 ^^
Application->Handle = g_hParent;
TForm1* pF1 = new TForm1(NULL);
pF1->ShowModal();
그럼~ 즐빌하세요~
|
HWND hDllParent; // 전역
VC++에서 호출할 함수 부분
#define CBUILDER_API extern "C" __declspec(dllexport)
CBUILDER_API void WINAPI DlgSetup( HWND hwnd, int *iSerial ) // Lib로 연결할 때는 WINAPI를 빼야 되는 것 같습니다. --> CBUILDER_API void DlgSetup( HWND hwnd, int *iSerial )
{
TForm1 *frm;
int ret;
hDllParent = hwnd; // <<<<<--------------
frm = new TForm1( NULL, hwnd ); //Application );
frm->SetData( *iSerial );
ret = frm->ShowModal();
if( ret==mrOk ) *iSerial = frm->GetData();
delete frm;
}
이부분을 DLL 호출 당할 폼에 추가해 주시고 물론 header 파일에도
void __fastcall TForm1::CreateParams(TCreateParams &Params)
{
TForm::CreateParams(Params);
//Params.Style = WS_VISIBLE|WS_CLIPSIBLINGS|WS_OVERLAPPED|WS_POPUPWINDOW|WS_DLGFRAME|DS_MODALFRAME;
//Params.ExStyle = WS_EX_LEFT|WS_EX_LTRREADING|WS_EX_WINDOWEDGE|WS_EX_DLGMODALFRAME|WS_EX_CONTROLPARENT;
Params.WndParent = hDllParent; // <<<<<--------------
}