■ 프로그래밍, 개발
리스트 박스안에 긴 화일명 넣기
토크맨
2014. 1. 31. 04:32
반응형
리스트 박스안에 긴 화일명 넣기
이 글이 쓰여질때는 CListBox::Dir() 멤버 함수는 단지 8.3 형태의 파일명만을 리스트박스로 읽어들였습니다. 95 와 NT 에서 지원하는 긴 화일명을 사용하기위해서는 _findfirst() 와 _findnext() 함수를 사용해서 직접 읽어들여야 합니다.아래 예제는 IDC_LISTBOX 란 ID 를 가지는 리스트 박스를 리소스에 생성하였다는것을 전제로 합니다. 당신이 첫번째로 할일은 리스트 박스에 대한 포인터를 얻는것입니다.
- CListBox * pList;
- pList = (CListBox *)GetDlgItem(IDC_LISTBOX));
- //리스트 박스를 비웁니다.
- pList->ResetContent();
- //첫번째 화일을 찾습니다.
- long hnd;
- struct _finddata_t filestruct;
- hnd = _findfirst("*.*",&filestruct);
- if((hnd == -1))
- {
- pList->AddString("no files found");
- return; // 이것이 이코드가 클래스 멤버로 부터 호출되었다는 것을 보여줍니다.
- }
- else
- if(::GetFileAttributes(filestruct.name) & FILE_ATTRIBUTE_ARCHIVE )
- iItem = pList->AddString(filestruct.name);
- //서치 패턴(*.*)에 맞는 나머지 화일들의 이름을 가져 옵니다.
- while(!_findnext(hnd,&filestruct))
- {
- if(::GetFileAttributes(filestruct.name) & FILE_ATTRIBUTE_ARCHIVE)
- pList->AddString(filestruct.name);
- }
- //서치 핸들을 닫고 관련된 자원을 해제합니다.
- _findclose(hnd);
이 작은 예제가 *.* 서치패턴에 맞으며 ARCHIVE bit이 지정된 파일들을 검색합니다. 이 방법은 ARCHIVE외의 Bit 가 세트된 파일은 무시합니다. 만약 모든 파일을 포함 하고 싶다면 디렉토리가 아닌 모든것을 읽어들이라고 코드를 수정하면 됩니다.
FILE_ATTRIBUTE_ARCHIVE 를 FILE_ATTRIBUTE_DIRECTORY 로 바꾸고, 서치패턴을 *로 바꾼다면, 리스트박스에 파일명이 아닌 디렉토리로 채울수 있습니다.
출처 : http://blog.naver.com/hijesong/100007917104

반응형