|
박동재 님이 쓰신 글 :
: ...
: 위의 소스 처럼 하면 폴더와 파일이 다 같이 이름순으로 출력 됩니다. 그런데 제가 출력 하고 싶은건 폴더는 폴더데로 파일은 파일데로 이름순 정렬을 해서 출력 하고 싶습니다. 그래서 제가 생각한 방법으로는 우선 폴더만 FileList에 넣어서 이름순 정렬을 하고 ListView에 넣고 다시 파일만 FileList에 넣어서 이름순 정렬을 해서 ListView에 넣으면 제가 출력하고 싶은 방법데로 될줄알았는데 FindFirst 함수를 FindFirst(DirPath, faDirectory, SR); 이렇게 바꾸어도 파일과 폴더가 같이 검색됩니다. 그래서
: done = FindFirst(DirPath, faDirectory, SR);
: while(!done)
: {
: if(SR.Attr == faDirectory)
: FileList->Add(SR.Name); //FileList에 파일 이름 추가
: done = FindNext(SR);
: }
: 이렇게도 해봤지만 C 디렉토리의 Program file디렉토리는 추가되지 않습니다.(아마 Program file디렉토리의 Attr이 faHidden으로 되나봐요)
: 폴더만 검색할려면 어떻게 해야 합니까? 아님 도스용 Mdir처럼 폴더는 폴더데로 파일은 파일데로 출력하는 다른 방법이 있는지 알려주세요 ㅡ.ㅡ
: ^^;;
:
: 그리고 또한가지 더 질문 할께요 파일의 확장자 데로 아이콘이 자동적으로 바꿀려면 제가 ImageList에 모든 아이콘을 다집어넣어서 확장자를 검색해서 넣어야 됩니까? 아니면 윈도우의 레지스트리나 다른 무언가를(아직 초보라서 ㅡ.ㅡ)읽어와서 하는 다른 방법이 있는지 쫌 알려 주세요
임펠리테리입니다.
TSearchRec의 Attr 값은 마스크 값이므로 한꺼번에 여러가지 속성을 가지고 있을 수 있습니다. 그러므로 무조건 = 연산자로 비교한다고 알아낼 수는 없구요. 다음과 같이 해보세요.
if((Sr.Attr & faDirectory) == faDirectory)
...
그리고... 파일의 아이콘을 읽어오려면 확장자만 가지고는 안됩니다. 예를 들어 실행파일이나 dll 파일등의 경우에는 그 자신만의 아이콘이 내장되어 있으므로 각 실행파일이나 dll마다 아이콘이 다르게 나타납니다. Win32 API함수인 ExtractIconEx()를 사용하면 지정한 파일의 아이콘을 HICON 객체로 읽어올 수 있습니다. 이렇게 알아낸 HICON을 빌더 코드에서 사용하려면, TIcon 객체를 하나 동적으로 생성한 후 Handle 프로퍼티에 HICON을 대입해주면 됩니다.
그럼 참고하시길...
|