음..
만약 위와같이 하려면요
몇가지 제약 조건이 있습니다.
첫째. Delphi와 CBuilder버젼이 똑 같아야 합니다.
둘째. Delphi-Dll 에서 runtime-package를 써서 compile해야학
CBuilder-Application에서도 runtime-package를 써서 compile해야합니다.
위 조건이 만족되지 않으면
그냥 VC로 만든 dll-Form을 CBuilder어플에 올리는 거나 마찬가지 입니다.
그경우엔
win32 api SetParent로 올려야 됩니다.
그럼..
신지무의 님이 쓰신 글 :
: 안녕하세요.
: 초보개발자 입니다.
:
: 해결이 안나서 재질문 드리게 되었습니다.
:
: 델파이에서 dll파일을 작성하였습니다.
: 이 dll은 폼을 가지고 있습니다.
:
: c++에서 폼을 만들고 이 폼에는 panel과 버튼이 있습니다.
: 버튼을 클릭시 dll폼이 panel에 나타나게 하고자 합니다.
:
: 그냥 폼을 호출할땐 잘 되지만 parent / parentwindow를 넣으면
: Access violation 에러가 떨어집니다.
:
: dll소스 (델파이)
:
: procedure Ftpshow2(pParent:TComponent); stdcall;
: begin
: frmFMS_S_1120 := TfrmFMS_S_1120.Create(nil);
: frmFMS_S_1120.Parent := pParent; //에러발생부분
: frmFMS_S_1120.ShowModal;
: end;
:
: exports //밖에 내보내다
: Ftpshow2;
:
:
:
: c++빌더 소스
:
: HINSTANCE hDll = Null;
: hDll = LoadLibraryA("nb21_ftp.dll");
: if (hDll)
: {
: typedef void (__stdcall *TFtpshow)(TComponent *);
: TFtpshow ftpshow;
: ftpshow = (TFtpshow)GetProcAddress(hDll, "Ftpshow2");
: ftpshow(this->Panel1);
: FreeLibrary(hDll);
: }
:
:
: 입니다.
:
: 어느곳을 잘못하고 있는 것일까요?
: ======================================
:
: handle 을 넘겨줘야 하는 거였군요..
: 클래스를 넘기려고 하다 보니 에러가 발생하고 작동이 안되었습니다.
|