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
[4291] Re:파일목록 드래그로 ListBox에 넣기...
박지훈.임프 [cbuilder] 4111 읽음    2000-10-19 00:00
임한섭 님이 쓰신 글 :
: 윈도우 탐색기나 폴더를 열어 파일들의 목록을 선택하여 드래그 또는 Ctrl-C로 복사하여
: listbox에 목록을 넣고 싶은데 어떻게 하면 되는지요?
:
: 예) winamp에서 파일 드래그 하는 것처럼요....
:


임펠리테리입니다.

시간은 없고.. 설명할 내용은 많고 해서... 예전에 만들어뒀던 샘플 소스만 보여드리지요. 설명은, 이 내용을 다음주 팁으로 할테니 참고하시기 바랍니다.

먼저 빈 프로젝트를 하나 만들고, 리스트박스를 하나 놓습니다.
그런 후, 폼의 헤더파일을 열고 폼 클래스 선언부의 private 섹션에 다음과 같이 추가하세요.
void __fastcall AddFilesToList(HANDLE hDrop);
void __fastcall WMDropFiles(TWMDropFiles &Msg);

그리고 폼 클래스의 선언부가 끝나기 직전, 그러니까 }; 바로 앞에 다음과 같이 추가하세요.
BEGIN_MESSAGE_MAP
    VCL_MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, WMDropFiles);
END_MESSAGE_MAP(TForm)

그런후에 폼을 더블클릭해서 OnCreate 핸들러를 만들고, 거기에 다음의 한 라인을 같이 추가하세요.
DragAcceptFiles(Handle, true);

그리고... 리스트박스의 OnKeyDown 핸들러를 만들어서 다음과 같이 코딩합니다.
if(Shift.Contains(ssCtrl) && Key == 'V')
{
    if(Clipboard()->HasFormat(CF_HDROP))
    {
        OpenClipboard(Handle);
        AddFilesToList(GetClipboardData(CF_HDROP));
        CloseClipboard();
    }
}

마지막으로 cpp파일의 마지막에 다음과 같이 추가합니다.
void __fastcall TForm1::WMDropFiles(TWMDropFiles &Msg)
{
    AddFilesToList((HANDLE)Msg.Drop);
}

void __fastcall TForm1::AddFilesToList(HANDLE hDrop)
{
    AnsiString FilePath;
    FilePath.SetLength(MAX_PATH);
    int FileCount = DragQueryFile(hDrop, 0xFFFFFFFF, FilePath.c_str(), MAX_PATH);
    for(int i=0; i<FileCount; i++)
    {
        DragQueryFile(hDrop, i, FilePath.c_str(), MAX_PATH);
        ListBox1->Items->Add(ExtractFileName(FilePath));
    }
    DragFinish(hDrop);
}

그럼 이만...

+ -

관련 글 리스트
4287 파일목록 드래그로 ListBox에 넣기... 임한섭 3226 2000/10/19
4291     Re:파일목록 드래그로 ListBox에 넣기... 박지훈.임프 4111 2000/10/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.