在对话框中类向导没有像单文档中那样提供了拖放事件(在类向导中找不到自己写了^_^)
建立一个对话框工程FileOffer
第一步:
在CFileOffer类中添加两个事件
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDropFiles(HDROP hDropInfo);
第二步:
在FileOfferDlg.cpp中添加
BEGIN_MESSAGE_MAP(CPlayTestDlg, CDialog)
//{{AFX_MSG_MAP(CPlayTestDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//添加响应消息
ON_WM_CREATE()
ON_WM_DROPFILES()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
第三步:
int CFileOfferDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
DragAcceptFiles(TRUE);
return 0;
}
void CFileOfferDlg::OnDropFiles(HDROP hDropInfo)
{
char *pFilePath;
int iFileNum;
int iReturnByte;
//得到拖放的文件数目
iFileNum = ::DragQueryFiles(hDropInfo, -1, NULL, 0);
for(int i=0; i<iFileNum; i++)
{
iReturnByte = DragQueryFile(hDropInfo, i, NULL, 0); //返回文件字节数
HANDLE hHeap = GetProcessHeap();
pFilePath = (char *)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, iByte);
if(pFilePath == NULL)
{
AfxMessageBox("分配内存不成功");
exit(-1);
}
DragQueryFile(hDropInfo, i, pFilePath, piReturnByte+1);
AfxMessageBox(pFilePath);
::HeapFree(hDropInfo, HEAP_ZERO_MEMORY, pFilePath);
}
DragFinish(hDropInfo);
}
三步到位OK