松鼠的博客

导航

控件接受文件拖放

 (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

posted on 2008-12-13 17:20  Xproer-松鼠  阅读(556)  评论(2)    收藏  举报