파일 탐색기 등에서 파일을 드래그 & 드롭해서 내가 만든 프로그램에 놓았을 때,

WM_DROPFILES 이벤트가 발생됩니다. 이를 이용하기 위해서는 아래와 같이 코딩하면 됩니다.

 

1. ON_WM_DROPFILES()         // 클래스 위저드에서 WM_DROPFILES를 재정의한다.
2. DragAcceptFiles();

 

BEGIN_MESSAGE_MAP(CLeftView, CTreeView)
//{{AFX_MSG_MAP(CLeftView)
ON_WM_DROPFILES()         // 클래스 위저드에서 WM_DROPFILES를 재정의한다.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()


void CLeftView::OnInitialUpdate() - oncreate()서 해도되고..
{
    CTreeView::OnInitialUpdate();
   

    // 파일 드래그 & 드롭을 위해 불러준다.
    DragAcceptFiles();
}

  

void CLeftView::OnDropFiles(HDROP hDropInfo)
{
    int nFiles;
    char szPathName[MAX_PATH];
    CString strFileName;
   
    // 드롭된 파일의 갯수
    nFiles = ::DragQueryFile( hDropInfo, 0xFFFFFFFF, szPathName, MAX_PATH );
//0xFFFFFF=-1이지?   


    for(int i = nFiles-1 ; i >= 0; i--)
    {
        // 파일의 경로 얻어옴
        ::DragQueryFile(hDropInfo, i, szPathName, MAX_PATH);
        AfxMessageBox( szPathName );
    }
   
    ::DragFinish(hDropInfo);
   
    CTreeView::OnDropFiles(hDropInfo);
}

 

 

 

-Drag기능 활성화
VOID DragAcceptFiles(<HWND hWnd,BOOL fAccept> or <bool>);->인자없이 쓰세요~


-HDROP에 대한 파일 경로를 얻어옴
UINT DragQueryFile(HDROP hDrop,UINT iFile,LPTSTR lpszFile,UINT cch);
hDrop:드랍될 파일들의 구조의 핸들(WParam)
iFile:드래그된 파일들의 인덱스
lpszFile:두번째에서 가리킨 인덱스의 파일 경로
cch:세번째 인자인 파일경로의 사이즈 

'develop > windows' 카테고리의 다른 글

BOOST 컴파일 옵션  (0) 2010.02.03
메모리릭 발생 위치에 Breakpoint 설정하기  (0) 2010.02.03
MS Patch API  (0) 2010.02.03
Remote Debugging  (0) 2010.02.03
HTTP 에러  (0) 2010.02.03

+ Recent posts