使MFC支持拖放文件的方法

使MFC支持拖放文件的方法
2014-12-30 11:41 313人阅读 评论(0) 收藏 举报
 分类:  MFC(11)  
在目标dialog关联的类的.h里添加//注意控件和对话框属性都不要选Accept Files
[cpp] view plain copy print?
afx_msg void OnDropFiles(HDROP hDropInfo);  
void PreSubclassWindow() ;  
相应的.cpp里添加
[cpp] view plain copy print?
BEGIN_MESSAGE_MAP(Unrar, CDialog)  
   ON_WM_DROPFILES()//这句话很重要  
END_MESSAGE_MAP()  


[cpp] view plain copy print?
void Unrar::PreSubclassWindow()   
{  
  DragAcceptFiles( TRUE );  
  CWnd::PreSubclassWindow();  
}  


[cpp] view plain copy print?
void CLogAnalyseToolDlg::OnDropFiles(HDROP hDropInfo)  
{  
    this->UpdateData(TRUE);  
    CRect rEdit;     
    m_editLogFilePath.GetWindowRect(rEdit); // 获得控件的坐标  
    POINT pos;     
    ::GetCursorPos(&pos); // 获得光标当前的屏幕坐标 如果光标在edit控件中,则显示拖动的文件名,进行响应操作;否则就什么都不作     
    TCHAR cFileName[256];     
    UINT uFileCount, u;     
    uFileCount = ::DragQueryFile(hDropInfo, -1, cFileName, sizeof(cFileName)); // 拖拉的文件个数   
    if((pos.x > rEdit.left) && (pos.x < rEdit.right) && (pos.y < rEdit.bottom) && (pos.y > rEdit.top)){     
        for(u = 0; u < uFileCount; u++){     
            ::DragQueryFile(hDropInfo, u, cFileName, sizeof(cFileName)); // 取得每个文件的文件名     
            m_editLogFilePath.SetWindowText(cFileName); // 如果指针在edit1里的话那么就把路径在edit1里显示  
            m_logFilePath = cFileName;  
        }     
        ::DragFinish(hDropInfo);     
    }   
    else{  
        for(u = 0; u < uFileCount; u++){     
            ::DragQueryFile(hDropInfo, u, cFileName, sizeof(cFileName)); // 取得每个文件的文件名     
            //m_edit2.SetWindowText(cFileName); // 如果指针不在edit1里的话那么就把路径在edit2里显示  
        }     
        ::DragFinish(hDropInfo);     
    }  
}  
http://blog.csdn.net/eldn__/article/details/42264029
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值