|
해답을 찾으셨나요?
빼빼로님의 의문사항이 이해가 잘안됩니다.
현재 제가하고 있는 Project중에
VB과 Builder로 만든 Dll을 사용합니다. ( VB용 특수 Component를 사용해야 하므로)
제가 VB를 전혀 할줄 몰라 Main 폼만 VB로 만들고
나머지는 Builder에서 폼을 만들어서 VB 폼에다 붙여서 쓰고 있습니다.
문론 그냥 독립적으로 Show해서 쓰는 Form도 엄청 많구요
Builder에서 쓰는Control 100%그래도 씁니다.
전혀 돌아가는데 이상이 없습니다.
그냥 Builder에서 코딩하듯이 했습니다.
한가지 빼빼로 님과 다른점은
StringGrid 같은 Builder Control의 ParentWindow를 따로 설정해주지 않았습니다.
StringGrid의 Parent를 당연히 Builder의 Form이구요
Form이 VB폼에 붙는경우 Builder Form의 ParentWindow를 VB 폼의 HWND 핸들로 설정해 줬습니다.
단 dll안의 Form의 ParentWindow가 VB의 핸들로 바뀌어 버리면
Form의 Message는 VB-form을 통해서 받는것 같더군요
Application->OnMessage = AppMessage;를 걸어놓으면
VB폼을 ParentWindow로 설정된 Form의 message는 걸리지 않더군요
그리고
StringGrid->PanetWindow=this;
이 코딩은 실행후에도 StringGrid->PanetWindow는 항상 NULL이더군요
VC++에서 테스트해보진 않았지만
StringGrid->Parent를 Builder 폼으로 설정해주면 이상이 없을것 같습니다.
만약 Builder로 만든 폼을 다른 VC나 VB로 만든 Form에 붙이려면
Builder폼의 ParentWindow를 VC 윈도우 HWND로 설정만 정확히 해주면 이상이 없을거 같습니다.
빼빼로 님이 쓰신 글 :
: 안녕하세요
:
: 항상 도움만 받다가 드디어 검색해도 나오지 않는 문제가 생겨 질문을 올리게 되었습니다.
:
: 게시판을 검색하여 DLL안에 폼을 넣어 VC++와 볼랜드 C++에서 표시하는데 성공하였습니다.
:
: 그런데 폼에 StringGrid가 들어갔을 경우에 문제가 발생하네요 ㅜㅜ
:
: StringGrid에 이벤트가 발생할때 "Control 'StringGrid1' has no Parent Window"라는 에러 메세지가
:
: 떠서 StringGrid1->Parant = this; StringGrid1->ParentWindow = this;를 넣어줬는데도 이런 메세지가
:
: 계속 뜹니다.
:
: 어렵게 DLL에 폼을 넣는걸 성공했는데 StringGrid와 같은 부모 윈도가 꼭 필요한 컴포넌트를 사용하지
:
: 못한다면 괜한짓을 한것이기에 절실히 도움이 필요합니다
:
: 도와주십시요~~~
:
:
: 아! 그리고 Parent와 ParentWindow를 지정하기 전과 후에 StringGrid의 부모의 이름을 띄워봤더니
:
: 제대로 이름은 표시가 되더군요 ㅡㅡ;;
:
: ShowMessage(StringGrid1->Parent->Name); --->이렇게 했을때 제대로 이름이 뜨는데도
:
: "Control 'StringGrid1' has no Parent Window" 가 발생하는 이유를 정말 모르겠네요 ㅠㅠ
|