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
[2746] Re:[질문 다시] 사용자 정의 컴포넡트에서 오류 메시지
박지훈.임프 [cbuilder] 4006 읽음    2000-01-17 00:00
임문환 님이 쓰신 글 :
: 우선 앞의 답변에 감사드립니다.
:
: 제가 질문할 때 빠뜨린 게 있어서요.
: mBitmap를 사용하기 바로 전에 아래와 같이 비트맵 메모리를 할당했음을 알려드립니다.
:  mBitmap=new Graphics::TBitmap;
: 물론 코딩 시 오타는 없는 게 확실합니다.
:
: 문제는 FImageList인데요, 일반 응용 프로그램에서는 TImageList를 폼에다 끌어다 놓는 방식으로
: 하지 않고 지금과 같이 메서드 내에서 동적으로 사용하여도 아무런 문제가 없습니다.
: 하옇든 문제는 FImageList에 있는데 그 이유를 모른다는 게 질문의 요지입니다.
:
: 감사합니다.



임펠리테리입니다.

저도 좀 이상하다 싶어서.. 이미지리스트의 vcl 소스를 분석해봤습니다. 그런데.. vcl소스상으론
별로 의심갈 부분이 없더군요. 'Invalid Image Size'라는 메시지 그대로, 새로 추가하려는 비트맵
이 이미지리스트의 가로/세로보다 작으면 익셉션이 발생하도록 되어있더군요.

그래서.. 다른 부분을 의심해봤는데.. 아무래도, LoadFromResourceName() 함수로 리소스에서
비트맵을 불러오는 루틴의 문제일 가능성도 있고...

일단, mBitmap의 가로/세로 크기와 ImageList의 가로/세로 크기를 검사해보세요.
익셉션이 발생하는 코드인 TCustomImageList::CheckImage()에서는 빌더의 버그로 제대로 된
값을 인스펙트할 수 없습니다. (with 문에서 빌더가 변수를 혼동하게 됩니다)
그러므로 다음과 같은 코드를 추가해서...

TStringList *sl = new TStringList;
sl->Add(AnsiString("이미지리스트 Width: ") + AnsiString(FImageList.Width));
sl->Add(AnsiString("이미지리스트 Height: ") + AnsiString(FImageList.Height));
sl->Add(AnsiString("비트맵 Width: ") + AnsiString(mBitmap.Width));
sl->Add(AnsiString("비트맵 Height: ") + AnsiString(mBitmap.Height));
sl->SaveToFile("C:\\디버깅 결과 파일.txt");
delete sl;

물론 이 코드는 AddMasked()함수를 사용한 부분 바로 앞에 둬야겠죠?
어쨌든 'Invalid Image Size'라는 익셉션이 발생한 것이 사실이므로, 결과파일을 보면 아마
가로 세로값이 서로 다르게 나올 겁니다. 그 값들을 보면 무언가 추측이 될 것 같군요.

그리고...
LoadFromResourceName() 함수 대신 다른 함수를 사용하는 것도 문제를 해결하는 방법이 될 수
있습니다. 임문환님께서는 이미지리스트에 리소스에 있는 비트맵을 추가하기 위해 임시 비트맵을
만들고 그 비트맵에 리소스의 비트맵을 불러온 후 다시 이미지리스트에 추가하는 방법을 사용하셨
는데, 이러한 절차를 하나로 줄여주는 간편한 함수가 TImageList에 있습니다.
GetInstRes() 함수인데, 사용법은 조금 까다롭고, 정확히 사용하시려고 하는 용도에 일치하지
않을 수도 있겠습니다.

그럼 참고하시길...

+ -

관련 글 리스트
2727 [질문 다시] 사용자 정의 컴포넡트에서 오류 메시지 임문환 3747 2000/01/14
2746     Re:[질문 다시] 사용자 정의 컴포넡트에서 오류 메시지 박지훈.임프 4006 2000/01/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.