使MFC支持拖放文件的方法
使MFC支持拖放文件的方法
_编程菜鸟_ 发表于4年前
使MFC支持拖放文件的方法
  • 发表于 4年前
  • 阅读 1485
  • 收藏 5
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

在目标dialog关联的类的.h里添加//注意控件和对话框属性都不要选Accept Files

afx_msg void OnDropFiles(HDROP hDropInfo);
void PreSubclassWindow() ;

相应的.cpp里添加

BEGIN_MESSAGE_MAP(Unrar, CDialog)
 ON_WM_DROPFILES()//这句话很重要
END_MESSAGE_MAP()

 

void Unrar::PreSubclassWindow() 
{
  DragAcceptFiles( TRUE );
  
  CWnd::PreSubclassWindow();
}
void Unrar::OnDropFiles(HDROP hDropInfo){
   this->UpdateData(TRUE);
   CRect  rEdit;   
   
m_edit1.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_edit1.SetWindowText(cFileName);   //如果指针在edit1里的话那么就把路径在edit1里显示
    }   

    ::DragFinish(hDropInfo);   
   } 
   else{
      for(u   = 0;   u   <   uFileCount;   u++){   
     ::DragQueryFile(hDropInfo,   u,   
cFileName,   sizeof(cFileName));   //取得每个文件的文件名   
     
m_edit2.SetWindowText(cFileName);   如果指针不在edit1里的话那么就把路径在edit2里显示

    }   

    ::DragFinish(hDropInfo);   
   }
} 


共有 人打赏支持
粉丝 4
博文 104
码字总数 14021
×
_编程菜鸟_
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: