控件接受文件拖放
(1)在OnInitDialog函数中增加代码:
DragAcceptFiles();
或为控件或对话框增加Accept Files属性:

(2)添加WM_DROPFILES消息映射:
void CFileDragDlg::OnDropFiles(HDROP hDropInfo)
{
//取得被拖动文件的数目
int DropCount=DragQueryFile(hDropInfo,-1,NULL,0);
for (int i=0;i<DropCount;i++)
{
//取得第i个拖动文件名所占字节数
int NameSize=DragQueryFile(hDropInfo,i,NULL,0);
HANDLE hHeap=GetProcessHeap();
char *pName=(LPSTR)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,++NameSize);//这里需要分配多一个字节的内存
if (pName==NULL)
{
MessageBox("给文件名分配暂存空间时出错","错误信息",MB_ICONERROR);
return;
}
//把文件名拷贝到缓冲区
DragQueryFile(hDropInfo,i,pName,NameSize);
//将文件名显示到ListBox上去
m_Dialog_List.AddString(pName);
//释放缓冲区
HeapFree(hHeap,HEAP_ZERO_MEMORY,pName);
}
}
相关参考:
http://wupei.j2megame.org/blog.php/myblog/vc/2008/01/12/vc-drop-file


浙公网安备 33010602011771号