Q&A

  • VC++ 윈도우에 Delphi DLL Form 붙이기
VC++에서 작성한 Application에 Delphi에서 작성한 DLL Form을 연결하는데 문제가 발생합니다.

VC++에서 먼저 메인 윈도우의 핸들을 Delphi DLL에 넘겨준 후 VC++의 Target Control의 핸들을 Delphi DLL Form의 특정 함수에 파라메터로 넘겨줍니다.

문제는 VC++의 Debug모드에서는 모든 작업이 정상적으로 이루어지는데 Releae모드로 컴파일 했을 때는 Unhandle Exception이 발생합니다.

DelphiDLL에서는 먼저 SetAppHandleToDll(HApp: THandle)이란 함수로 어플리케이션 핸들을 받고 내부적으로 Application.Handle := HApp;를 수행합니다.

그리고 SetPanel1HandleToDll(HPanel: THandle)이란 함수로 VC++의 Target Control의 핸들을 받습니다. 그리고 내부적으로는...

if (frmPanel = nil) then frmPanel := TFrmPanel.Create(Application);
Windows.SetParent(frmPanel.Handle, HPanel);
frmPanel.Align := alClient;
frmPanel.Show;

처리를 통해 Form을 표시하려고 합니다.

SetAppHandleToDll후 SetPanel1HandleToDll을 호출하면 Unhandle Exception이 발생하지만 SetPanel1HandleToDll을 먼저 호출해서 Target Control(Panel)의 Handle이나 여러 핸들값들을 체크해보면 값이 보입니다.

하지만 SetAppHandleToDll을 먼저 호출하면 SetPanel1HandelToDll에서 에러가 발생하죠.

"그냥 이렇게 해보면 어떨까요?"라는 팁도 좋으니... 많은 리플이 달렸으면 좋겠습니다.
0  COMMENTS