Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[8] [정보] 드래그된 파일의 정보 얻어내기...
이정욱 [ ] 3669 읽음    1997-10-22 20:07
안녕하세요... 나이렉스의 민성기 입니다.
드래그 된 파일의 정보를 알아내기 전에, 먼저 윈도우에서
일어나는 드래그 동작에 대한 고민이 필요 합니당.

윈도우에서 파일을 드래그 하는 경우는 크게 세가지로 나눌 수 있습니다.
  . 프로그램을 실행시키기 위해서 파일의 아이콘을 어플리케이션의 아이콘에 떨어뜨리는 동작.
  . 열려있는 어플리케이션 위에 파일을 떨어뜨리는 동작.
  . 데스크 탑 위에 있는 어플리케이션의 최소화된 아이콘에 파일을 떨어뜨리는 동작. (윈도 3.X 버전)

마지막 세번째는 윈도 3.X버전에만 해당되니, 저는 언급하지 않겠습니다.

첫번째의 경우는 어플리케이션에 '커멘드 라인 파라미터'로 파일의 이름이
전달됩니다. 이 경우 간단히 ParamStr[]배열을 살펴 보시면 되죠.
한가지~! 중요한 사실은, NT에서는 상관 없지만 95에서는 전달되는 파일명이
'짧은 파일 이름'이라는 사실 입니다.

두번째의 경우는 어플리케이션에 WM_DROPFILES라는 메시지가 발생하게 되죠.
이 메시지에 반응하는 사용자 정의 이벤트 핸들러를 작성하는 방법은 아래와
같습니당.

  procedure WMDropFiles(var Msg : TWMDropFiles); message WM_DROPFILES;



이 이벤트 핸들러에서 DragQueryFile()이란 API를 이용해 파일의 경로명과
파일명을 걷어올 수 있죠... 참고삼아, 여러개의 파일이 드래그 되는 경우,
윈도 3.1에서는 첫번째 파일만 전달 되었지만, 윈도 95에서부터 모든 파일이
다 들어 온답니다.
아래의 예제는 위에서 언급한 이벤트 핸들러의 몸체인데, 드래그로
떨어뜨린 파일의 이름과 경로를 리스트 박스에 넣어주는 역할을 합니다.

var
  Buff : Array[0..255] of Char;
  Count : Word;
begin
  Handle := True;
  for Count := 0 to          
   DragQueryFile(Msg1.wParam, $FFFFFFFF, NIL, 0) -1 do
  begin
    DragQueryFile(Msg1.wParam,
                  Count,
                  @Buff,
                  SizeOf(Buff));
    ListBox1.Items.Add(StrPas(Buff));
  end;
  DragFinish(Msg1.wParam);
end;



쉽죠..?? 그럼..


+ -

관련 글 리스트
8 [정보] 드래그된 파일의 정보 얻어내기... 이정욱 3669 1997/10/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.