C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[46556] Re:void 폼 넘기기??
장성호 [nasilso] 901 읽음    2006-09-18 08:32
질문과 예제 코드가 이해가 잘안됩니다만
질문만 봐서 답변드린다면 Form이 2개 있는데 각각의 Form에 있는 그래프 컴포넌트에
그리프를 그리는 함수를 만드고 싶다는 얘기로 들립니다.

1. 그러면 함수에 인자로 폼을 넘기지 말고 그래프 컴포넌트를 바로 넘기십시요
    예를들어 그래프 컴포넌트가 TChart *라고 한다면...
void __fastcall DrawAscan(TChart * chart , int X ,  int Y)
{
        //
}
   위와같이 하면 어떤 폼인지 cast도 if도 필요없습니다.
   바도 chart에 그리면 됩니다.

2. Form을 꼭 넘겨야 하는 이유가 있다면 TForm *형태로 넘기십시요
void __fastcall DrawAscan(TForm * form , int X ,  int Y)
{
     //
}

3. 또한 Form을 비교할때 String으로 비교할 필요가 있을까요?
    포인터를 바로 비교하면 더 직관적이고 빠르지 않을가요?
void __fastcall DrawAscan(TForm * form , int X ,  int Y)
{
      if(form == frmAscan )
      {
              //
      }
      else if( form ==  frmFFTAForm)
      {
            //
      }
}

그럼....

이용태 님이 쓰신 글 :
: 2개의 폼이 있습니다. 각각의 폼에는 그래프를 그리는 컴포넌트가 올려져 있습니다.
:
: 한개의 함수가 있습니다. 이 함수는 그래프를 그려주는 기능을 합니다.
:
: 여기서, 한개의 함수를 이용하여 함수의 전달인자로 넘어오는 폼에다가 그래프를 그려줄려고 합니다.
:
: 밑의 소스를 보게 되면 전달인자로 폼의 주소와 폼 이름을 받습니다. 그리고 함수 내부에서 void형 포인터를 선언한 후,
: 넘어온 폼 주소를 실제 폼으로 캐스팅하여 vForm에다가 저장했습니다.
:
: 이렇게 하면 vForm에는 "frmAscan"또는 "frmFFTAForm"가 들어가 있을거라 생각되고요, 그거에 따라 해당 폼에 그래프를 출력할 거라 생각했습니다.
:
: 그런데 프로그램 돌려보면 안됩니다. -_-;;;;;
:
: 이런 경우 어떻게 해야 합니까?
:
: void __fastcall TfrmCForm::DrawAscan(DWORD *dwFrm, AnsiString fmName, int X, int Y)
: {
:       void *vForm = NULL;
:       if(fmName == "frmAscan")
:                 vForm = (TfrmAscan*)dwFrm;
:       else if(fmName == "frmFFTAForm")
:     vForm = (TfrmFFTAForm*)dwFrm;
:
: //그래프 출력!
:
:
: }

+ -

관련 글 리스트
46554 void 폼 넘기기?? 이용태 827 2006/09/17
46557     Re:void 폼 넘기기?? BloodWolf 761 2006/09/18
46556     Re:void 폼 넘기기?? 장성호 901 2006/09/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.