|
이휴;;; 무식이 죄죠 ^^:::::::
Objective 는 VC++ Application 에서 C++ Builder 로 만든 DLL 의 함수를 호출하는데
DLL 의 폼이 TaskBar 에 표시되지 않게 하는 것입니다.
이것 역시 구글형님에게 배웠습니다만 ^-^
VC++ 에서 작성한 윈도우의 Handle 을 적당히 DLL 로 넘기고 DLL 을 동적으로 생성하기 이전에
DLL 의 Application 객체의 Handle 에 덮어 씌어 주면 됩니다.
지금 막 테스트 해봤는데 아주 깔끔하게 잘 되는군요 ^^
Application->Handle = g_hParent;
TForm1* pF1 = new TForm1(NULL);
pF1->ShowModal();
좋은 아이디어 제공에 감사드리고 이번기회에 또 구글형님에게도 감사드립니다. ^^...
황경록 님이 쓰신 글 :
: dynamic_cast<TWinControl*>(this->Parent)->ParentWindow = hwnd;
:
: 이런식으로 해도 가능하지 않을까요? ^^:::
:
: ----
:
: 아참~ VC 에서 C++ Builder에서 만든 DLL 을 사용하는 간단한 예제를 만들어서 올려주실수 있으신가요? ^^::::: 저도 곧 필요할 거 같아서요;;; ^^
:
: 박영목 님이 쓰신 글 :
: : 이리저리 헤메고 방황하다. 찾았는데...
: :
: : 자식으로 만드는 것은 간단하군요... WIN API 함수를 사용하면 ...
: :
: : frm = new TForm1( NULL );
: : ::SetParent( frm->Handle, hwnd ); //hwnd는 VC++에서 넘긴 Handle
: :
: : -------------------------------------------------------------
: :
: : 그런데 Dialog(Form) 뜨는 것은 HINSTANCE 와 관계가 있는 것 같습니다.
: :
: : 자식하고는 아무 관계가 없다. DLL도 독립적인 Instance를 갖고 있다.
: : 그래서 DLL에 있는 Form을 호출하면 TASKBAR에 프로그램이 하나 새로 생기는 것을 봅니다.
: :
: : 그런데.... *.lib 파일로 include해서 만든 프로그램은 TASKBAR에 만들지 않고
: : 정말 그냥 폼에서 ShowModal()한 것처럼 잘 뜨는 것을 볼 때....
: : 이 방식으로 하면 HINSTANCE를 같은 것으로 잡는 것이 아닌가 생각합니다. 그냥 느낌...
: :
: : DLL 사용법에 명시적, 묵시적(암시적) 하던데... 저는 용어에 약해서..... ㅋㅋㅋ
: :
: : 이것을 어떻게 해결하나.... 꼭 하고 싶은데.... 미치도록 하고 싶은데.....
: :
: : CBuilder에서 만든 DLL을 사용할 수 있게 VC++ 사용할 수 있게. *.lib 파일 만들 수 있는
: :
: : 방법이 없다는 것인가? 흐흑~~.... Help me!
|