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
[36134] Re:ImageList에서 삭제 방법..
수야!╋ [sooya23] 1000 읽음    2004-07-07 01:41
소스의 분석을 요청하신거 같군요...

어려운 질문은 아닐거 같은데 답변이 없는거 보니.. ㅡ,.ㅡ;

(아실꺼라 생각되지만 전체적인 요약을 위해 일일이 쓰겠습니다.)

Graphics::TBitmap *pBmp = new Graphics::TBitMap;
이부분은 TBitmap형의 pBmp라는 놈에게 TBitmap을 생성하라는 소리지요?

IL->Add(pBmp,NULL);
이부분의 IL이 ImageList가 맞겠지요..
이미지 리스트에 pBmp라는 놈의 포인터를 등록한것입니다.

다른함수부...

Graphics::TBitmap *pBmp;
이부분은 메모리를 생성한것이 아니라 TBitmap에 있는 클래스로 선언하여
내부변수나 함수를 그대로 사용하기 위한 목적입니다.

IL->GetBitmap(0, pBmp);
이부분은 처음에 메모리를 생성하였던 놈의 포인터를 갖고있는 녀석중 0번째에 있는 놈의 포인터를
받는 부분입니다. 절대적으로 Assign이 아니라 그냥 포인터 대입인것 같습니다.
빌더가 설치안된 컴이라 확인이 안되는 군요 ㅋㅋㅋ

delete pBmp;
이부분은 처음에 생성한 메모리를 제거하기 위한 부분입니다.
따라서 Assign이 아니라 포인터 대입이 맞는거 같지여?

IL->Delete(0);
이부분은 아마도 Loop문을 돌면서 제거할것 같군요
이미지 리스트가 갖고있는 첫번째 메모리 포인터 주소를 지우는 것입니다.
실제 메모리 영역을 delete 하는것이 아니라
처음에서 Add 시켜줄떄 받은 메모리 주소값만 이미지리스트에서 삭제하는 것입니다.

이해가 조금 되시는 지요?

이해가 되실때까지 읽어보심이 좋을듯 판단됩니다.

안되신다면 다시 리플 달아주세요~


김성연 님이 쓰신 글 :
: Graphics::TBitmap *pBmp = new Graphics::TBitmap;
: IL->Add(pBmp,NULL);
:
: ...
:
: 다른 함수
: Graphics::TBitmap *pBmp;
: IL->GetBitmap (0, pBmp);
: delete pBmp;
: IL->Delete(0);
:
: 웬지 GetBitmap() 호출시에 Assign이 된다는 얘기같던데요.. 헬프 찾아서 보니까요.
: 그러면 위처럼 해주면 안되지 않나요?
: IL->Delete(0); 해주면 알아서 되나요?
: TList와는 달리 타입을 알고 있어서 그런가요?
: 아니면 Add 해주고 바로 delete 를 해줘야 하는 건가요?

+ -

관련 글 리스트
36094 ImageList에서 삭제 방법.. 김성연 823 2004/07/06
36134     Re:ImageList에서 삭제 방법.. 수야!╋ 1000 2004/07/07
36141         Re:Re:ImageList에서 삭제 방법.. 김성연 1006 2004/07/07
36144             Re:Re:Re:ImageList에서 삭제 방법.. 수야!╋ 1262 2004/07/07
36159                 Re: 답변 감사드립니다 김성연 759 2004/07/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.