빌더에서 만든 DLL(프레임-각종 VCL 라이브러리, 컴포넌트를 담고 있음)을 VC++에 올려서 사용하는 방법을 찾아보다가 "Lyn"님의 답변과 C++ 빌더 포럼 강좌/문서 게시판을 뒤져.. "김태선"님이 쓰신 글을 참고하여(
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tutorial&no=143)
어케어케 VC++에서 불러다가 쓸 수 있게 하였습니다.
테스트는 빌더에서 폼을 하나 만들고 그 폼을 DLL로 변환해서 VC++에서 호출하는 식으로 했습니다.
VC++ MFC 어플과 함께 별도의 창으로 폼이 뜹니다. 잘됩니다..;;
그런데 요것을 폼이 아닌 프레임으로 해서 VC++의 다이얼로그 박스내에 동적으로 올려놓고 싶습니다.
빌더에선 Frame의 생성자에 부모 원도우를 지정만 하면 부모 원도우내에 Frame이 올라가곤 했습니다.
그런데 VC++에선 이것을 어떻게 해야 할지 모르겠습니다.
VC에서 빌더에서 프레임을 만들도록 하고 부모원도우를 VC 다이얼로그로 지정할려고 했는데 코드는 에러없이 돌아가는데 실행시 문제가..;;;
//요기는 VC++ 코드입니다.
p->CreateFrame((unsigned long*)this); //this 다이얼로그를 가리키는거 같습니다.
또는
p->CreateFrame((unsigned long*)this->hInst);
-------------------------------------------------------------------
//요기는 빌더쪽 코드
void __stdcall CreateFrame(unsigned long *pParent)
{
//frameDLL_VC = new TFrame3((TWinControl*)pParent);
frameDLL_VC = new TFrame3(Application);
((TWinControl*)frameDLL_VC)->Parent = (TWinControl*)pParent;
}
-------------------------------------------------------------------
이렇게 하면 내부적으로 Frame은 동적으로 생성이 되는거 같은데,
프레임의 부모를 지정하는 곳에서 문제가 생기는거 같습니다.
VC++의 특정 컨트롤(다이얼로그가 될수도 있고, SDI, MDI View 위일수도 있습니다..) 위에 Frame을 위치시킬려면 어떻게 해야 할까요?
그리고 추가로.. CreateFrame 함수 내에 TFrame3 동적으로 생성할 경우 Application이 아닌 넘어온 부모 원도로 지정하는 방법은 어떻게 될까요?