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
[39573] Re:Re:MDI Application 에서 Access Violation 에 관한 문제
ymin [kccm00] 853 읽음    2005-03-18 23:14
답변 감사합니다.

님이 쓰신 글 :
: ymin 님이 쓰신 글 :
: : MDI Child 폼을 동적으로 생성하여 사용하는데 Single 로
: : 사용 할 때는 잘 되는 프로그램이 동적으로 생성하여 사용
: : 할때는 여러곳에서 Access Violation 이 일어나는군요.
: : 왜그런가요? 일반적인 Rull 같은것이 있는지요?
:
: 보통, 아무 생각 없이 코딩하게 되면 디폴트로 제공되는 Form2를 MDI Child로 생각하고 사용하기 쉽습니다.
: 메인 폼 클래스에서 MDI Child를 액세스하려면 이렇게 하지 않고 아래의 멤버들을 사용하여 합니다.
: 아울러, 디폴트 상태로는 프로그램 시작시 Form2가 자동 생성되는데 이를 그렇게 하지 않도록 하는 게 일반적입니다.
: 이는 [Project]->[Options...]->[Forms] 탭에서 MDI Child 폼을 'auto-create forms' 창에서 'available forms'창으로 옮김으로써 가능합니다. 그리고 유닛 파일 상단의 TForm2 *Form2;과 이의 헤더 파일 하단의 extern PACKAGE TForm2 *Form2;는 삭제하는 게 좋습니다(Form2 전역 변수는 사용하지 않을 테니까요).
: 빌더의 예제 폴더에 보면 MDI에 관한 프로그램 소스가 있으므로 이를 참고하시는 것도 좋겠습니다.
:
: __property int MDIChildCount = {read=GetMDIChildCount, nodefault};
: __property TForm* MDIChildren[int I] = {read=GetMDIChildren};
: __property TForm* ActiveMDIChild = {read=GetActiveMDIChild};
:
: MDIChildren의 각 원소와 ActiveMDIChild는 TForm 형입니다.
: TForm과 그 조상 이외의 멤버에 액세스하려면 위를 실제의 형으로 변환하여 사용하면 되겠습니다.
: 디폴트 상태로 코딩을 하면 TForm을 상속받은 TForm2 클래스가 MDI Child의 형이 될 것입니다.
: 즉, class TForm2 : public TForm과 같을 것입니다.
: 따라서, ActiveMDIChild를 TForm2로 형변환하여 사용자 정의 메서드나 변수에 액세스하여야 합니다

+ -

관련 글 리스트
39383 MDI Application 에서 Access Violation 에 관한 문제 ymin 734 2005/03/05
39392     Re:MDI Application 에서 Access Violation 에 관한 문제 853 2005/03/07
39573         Re:Re:MDI Application 에서 Access Violation 에 관한 문제 ymin 853 2005/03/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.