파일 탐색기 등에서 파일을 드래그 & 드롭해서 내가 만든 프로그램에 놓았을 때,
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 |