DragAcceptFiles()함수와 WM_DROPFILES메세지를 이용해서 드래그앤드랍을 구현 할 수 있습니다.
다이얼로그 베이스 프로젝트에서 아래와 같이 헤더와 소스파일에서 구현하면 됩니다.
CMFCDropFilesDlg.h
protected:
afx_msg void OnDropFiles(HDROP dropInfo);
DECLARE_MESSAGE_MAP()
CMFCDropFilesDlg.cpp
BEGIN_MESSAGE_MAP(CMFCDropFilesDlg, CDialogEx)
ON_WM_DROPFILES()
END_MESSAGE_MAP()
BOOL CMFCDropFilesDlg::OnInitDialog()
{
DragAcceptFiles(); // entire dialog
list.DragAcceptFiles(); // control represented by variable m_oPath
}
void CMFCDropFilesDlg::OnDropFiles(HDROP dropInfo)
{
CString strFile;
DWORD nBuffer = 0;
// Get the number of files dropped
int nFilesDropped = DragQueryFile(dropInfo, 0xFFFFFFFF, NULL, 0);
for (int i = 0; i < nFilesDropped; i++)
{
// Get the buffer size of the file.
nBuffer = DragQueryFile(dropInfo, i, NULL, 0);
// Get path and name of the file
DragQueryFile(dropInfo, i, strFile.GetBuffer(nBuffer + 1), nBuffer + 1);
strFile.ReleaseBuffer();
list.SetWindowText((strFile));
}
// Free the memory block containing the dropped-file information
DragFinish(dropInfo);
}
반응형
댓글