본문 바로가기
■ 프로그래밍, 개발

리스트 박스안에 긴 화일명 넣기

by 토크맨 2014. 1. 31.
반응형

 

리스트 박스안에 긴 화일명 넣기 

이 글이 쓰여질때는 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 

 

 

 

 

 

반응형

댓글