|
답변 정말 감사합니다.~ ^^
장성호 님이 쓰신 글 :
: 제가 알기로는 Handle만 가지고는 class의 객체포인터를 찾을수 없는걸로 알고있습니다.
:
: [의문 1 ]
: 그런데 꼭 Handle을 넘겨야 하나요?
: TForm *를 넘기면 안되나요?
:
: CreateSubForm(Form1); //TForm *를 인자로 넘기기
:
:
: void CreateSubForm(TForm *frmOwner)
: {
: TForm *frm=new TForm(frmOwner);
: frm->Parent=frmOwner;
: frm->Show();
: }
: 위와같이 하면 안되나요?
:
: 만약 보내는 쪽이나 또는 받는 쪽에서 TForm*형을 알수 없다면
: void *로 넘기면 되는데...
:
: void CreateSubForm(void *frmOwner) //void *로 받는경우
: {
: TForm *frm=new TForm((TForm *)frmOwner);
: frm->Parent=(TForm *)frmOwner;
: frm->Show();
: }
:
:
: [답변 1]
: //Call...
: CreateSubForm(Form1->Handle);
:
: TForm *frm
: void CreateSubForm(HWND hWnd)
: {
: frm=new TForm(NULL);
: frm->ParentWindow=hWnd; //이렇게 하면 넘겨온 핸들위에 폼이 생성됩니다.
: frm->Show();
: //핸들이 TPanel이어도 되고 ... 어떤것이든 윈도우 핸들이면 됩니다.
: }
:
: 또는
: TForm *frm
: void CreateSubForm(HWND hWnd) //
: {
: frm=new TForm(hWnd); //핸들만 맞으면 됩니다....
: frm->Show();
: }
:
: 그런데 위와같이 하는 경우 Form의 Owner가 설정되는 것은 아니고 Parent로 설정되는것이므로
: Parent를 명시적으로 지정해줄 필요는 없지만
: 프로그램이 종료할때는 Ownert가 없어질때 자동으로 delete되지 않습니다.
: 코딩으로 delete해줘야합니다.
:
: TForm *를 넘기는 경우는 delete해주지 않구요
:
:
: 우리 님이 쓰신 글 :
: : 안녕하세요 한가지 궁금한게 있어서 이렇게 문의합니다.
: :
: : Form 을 생성하면
: :
: : Form->Handle 이 있자나요..
: :
: : 그런데 이 핸들을 가지고 다시 Form 의 포인터 (TComponent *) 를 얻어낼 수 없을 까요?
: :
: : 어떤 함수에서 Form->Handle 를 인자로 받습니다.그런데 내부에서
: :
: : Form 을 Parents로 하는 Form을 다시 생성해야하는데 Form->Handle 을 가지고
: :
: : 알아내기가 힘드네요.. 뭔가 있을것 같은데..
: :
: : 고수님들 한 수 부탁합니다.~
|