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
[43927] Re:폼의 OnPaint 이벤트와 Paint 함수 재정의
박지훈.임프 [cbuilder] 1817 읽음    2006-03-05 00:35
VCL의 Forms.pas 파일을 보면, TCustomForm의 Paint 함수가 다음과 같이 정의되어 있습니다.
procedure TCustomForm.Paint;
begin
  if Assigned(FOnPaint) then FOnPaint(Self);
end;

이걸 C++빌더식으로 번역해보면 다음과 같이 됩니다.

void __fastcall TCustomForm::Paint(void)
{
    if(FOnPaint != NULL) FOnPaint(this);
}

그러니까, TCustomForm::Paint 함수의 단 하나의 역할은 OnPaint 이벤트핸들러를 호출하는 것입니다.

따라서, 만약 Paint 함수를 오버라이딩하고 베이스클래스(TCustomForm)의 Paint를 다시 호출해주면 OnPaint도
호출이 되고, 베이스클래스의 함수를 호출해주지 않으면 OnPaint는 이벤트핸들러를 달아놔도 그 핸들러가 동작하지
않게 됩니다.

그럼...


잠스터 님이 쓰신 글 :
: 메인폼에 폼을 하나 추가하였습니다.
: 그리는 루틴을 정의하기 위해 폼의 OnPaint 이벤트를 구현하는 도중,
: 문뜩 다른 컴포넌트의 repaint 처리와 차이점이 보여서 이렇게 질문올립니다.
: 가령 TCustomPanel을 상속받아 paint루틴을 정의하려면
: DYNAMIC void __fastcall Paint(void);
: 이렇게 정의하여 사용했었는데, 만약 위에서 추가한 폼에 OnPaint 이벤트와 재정의한 Paint 함수를 같이 둘 경우,
: 어떻게 동작하는지 궁금하네요..
: (사실 Paint 함수를 재정의하는 것도 어떤 컴포넌트에 해줘야 하는지도 잘 모르겟슴니다..)
:
: 이 부분에 대해 자세히 설명해 주시면 와방 감사드리겠슴니다..^^

+ -

관련 글 리스트
43925 폼의 OnPaint 이벤트와 Paint 함수 재정의 잠스터 1238 2006/03/04
43927     Re:폼의 OnPaint 이벤트와 Paint 함수 재정의 박지훈.임프 1817 2006/03/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.