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
[889] [답변] DREAMSYS/ 파일 아이콘 .../프포
박지훈.임프 [cbuilder] 4462 읽음    1999-01-07 07:05
안녕하세요. 천리안 프로그래머포럼 C++Builder 담당자 임펠리테리입니다.

놀랐습니다. 엄청나게 공부를 하시나 보군요~! 질문이 하나둘이 아니니...

말씀하신대로 ExtractIcon()은 16비트 함수입니다. 그런데, 이늠의 32비트 버전은

SHFILEINFO가 아니고, ExtractIconEx() 입니다. 32비트함수가 새로이 만들어진것은

이유가 있겠죠? 이늠은 큰아이콘과 작은 아이콘을 따로 리턴해줍니다. 한방에요.

말씀하신 SHFILEINFO는 함수가 아니고 구조체입니다. 그리고 이 구조체를 사용하는

함수는 SHGetFileInfo() 이죠. 이 함수는 파일이나 폴더의 여러가지 정보를 리턴해

주는데, SHFILEINFO를 리턴하면서 여기에 정보를 담아주는 식입니다.

이 구조체는 역시 그 파일속에 있는 아이콘의 갯수와 아이콘 핸들도 리턴합니다.

SHGetFileInfo()는 ExtractIconEx()보다 좀더 복잡한 동작을 하는데...

이에 대해선 다음번에 설명하죠.

ExtractIconEx()의 사용법에 대해 설명드리죠. 아무래도 ExtractIcon() 함수의

32비트 버전을 원하시는것 같으니까요.

주의할 것은, ExtractIconEx()은 HICON의 배열들을 인자로 요구한다는 것입니다.

먼저 빈 프로젝트를 하나 만들어서 버튼하나와 이미지 두개를 떨어뜨린 후에

버튼의 클릭핸들러를 다음과 같이 코딩해보세요.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    HICON LargeIcon[1];
    HICON SmallIcon[1];
    ExtractIconEx("아이콘을 읽을 파일의 패스", 0, LargeIcon, SmallIcon, 1);
    Image1->Picture->Icon->Handle = LargeIcon[0];
    Image2->Picture->Icon->Handle = SmallIcon[0];
}

이렇게 하면 이미지 두개에 각각 큰 아이콘과 작은 아이콘이 나타납니다.

만약 여러개의 아이콘을 한꺼번에 받으시려면, HICON 배열의 인덱스 갯수를 원하는

만큼 만들어서 넘겨주고, 마지막 인자인 1을 받아올 아이콘의 갯수로 해줘야 합니다.

그럼 도움되시길...



독립문에서 임펠리테리였습니다.

(cbuilder, cbuilder@thrunet.com)




+ -

관련 글 리스트
883 [질문] 파일 아이콘 .../프포 dreamsys 4018 1999/01/06
889     [답변] DREAMSYS/ 파일 아이콘 .../프포 박지훈.임프 4462 1999/01/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.