MFC如何实现文件的拖曳?

步骤如下:
 
1.  “去掉”edit控件的AcceptFile属性(false),然后在CMyDlg::OnInitDialog()中代码中添加:
     CWnd::DragAcceptFiles()
     这样你的主程序就可以在文件拖动到主对话框时响应WM_DROPFILES消息。
2. 在BEGIN_MESSAGE_MAP(CMuyDlg,CDialog)和END_MESSAGE_MAP()命令宏中间添加:
    ON_WM_DROPFILES()
    在对话框头文件.h中添加 :  afx_msg void OnDropFiles(HDROP hDropInfo)
    然后在CPP中文件定义函数体 void CMyDlg::OnDropFiles(HDROP hDropInfo)
    这样你就完成了最基本的消息映射。
3. 在CMyDlg::OnDropFiles添加如下实现代码:
   void CMyDlg::OnDropFiles(HDROP hDropInfo)
   { //可以接受文件的拖曳
        CRect rEdit;  
        GetWindowRect(&rEdit);     //获得edit控件的屏幕坐标
        POINT pos;  
        ::GetCursorPos(&pos);   //获得光标当前的屏幕坐标  
        //如果光标在edit控件中,则显示拖动的文件名,进行响应操作;否则就什么都不作  
        if((pos.x>rEdit.left) && (pos.x<rEdit.right) && (pos.y<rEdit.bottom) && (pos.y>rEdit.top))  
        {  
             TCHAR cFileName[256];  
             UINT uFileCount, u;  
             uFileCount = ::DragQueryFile(hDropInfo,-1,cFileName,sizeof(cFileName));   //拖拉的文件个数  
             for(u=0; u<uFileCount; u++)  
             {  
                  ::DragQueryFile(hDropInfo, u, cFileName, sizeof(cFileName));   //取得每个文件的文件名  
                  //-----这儿写你的处理代码------//
                  SetWindowText(cFileName);
                  //------你自己的处理代码-------//  
             }  
             ::DragFinish(hDropInfo);
             m_csFilePathName = cFileName;  //把得到的文件名显示在控件里
        }
        UpdateData(FALSE);
}
4.  搞定。
/
// RichEditCtrl控件内容的清空:
      m_cRichEditCtrl.SetSel(0L,-1L);  //每次都清空RichEditCtrl控件中的内容
      m_cRichEditCtrl.ReplaceSel(NULL);
MFC使按钮可用:
GetDlgItem(IDC_COMBO1)->EnableWindow(TRUE/FALSE);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值