松鼠的博客

导航

统计

控件接受文件拖放

 (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   Xproer-松鼠  阅读(545)  评论(2编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示