|
먼저 고수님들의 친절한 답변에 감사드립니다 꾸벅~~
아직 문제가 해결된것은 아니구요 지금도 나름대로 해법을 찾고 있습니다.
장성호님의 답변대로 VC++에 DLL로 만든 폼(StringGrid를 포함)을 그냥 띄우는데는 문제가 없습니다.
그렇지만 DLL로 만든폼에서 다시 DLL로 만든폼(StringGrid 포함)을 띄울때
"Control 'StringGrid1' has no Parent Window"라는 에러가 발생합니다.
게시판을 검색해보니 Parent가 지정이 되지 않아서 그렇다는 답변을 보고 해당 StringGrid를 가지고 있는 폼으로
지정을 했는데도 이러한 에러가 발생하더군요. 물론 Parent의 이름을 찍어보니 해당폼의 이름이 정확히 나오구요
외랑님의 말씀대로 동적 생성을 했을때도 같은 문제가 발생하더라구요 ㅠㅠ
혹시라도 제가 실수한 부분이 있는지 다시 확인중에 있습니다.
문제를 해결한 후에 이곳에 올리겠습니다 (잘하면 저도 문제해결 답변을 하나 올릴수 있겠군요 ^^)
혹시라도 이런 문제를 겪어보신분이나 해결해 보신분이 있다면 답변 부탁드립니다~~
그럼 수고하세요
장성호 님이 쓰신 글 :
: 해답을 찾으셨나요?
:
: 빼빼로님의 의문사항이 이해가 잘안됩니다.
:
: 현재 제가하고 있는 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" 가 발생하는 이유를 정말 모르겠네요 ㅠㅠ
|