文件拖放处理

原创 2007年10月04日 16:42:00
2007-10-4星期四
当前支持对话框范围的拖放,下一步改进目标,将拖放定位在一个CEdit上
Step 1:
BEGIN_MESSAGE_MAP(CWISH_ENCRYPT_FOLDERDlg, CDialog)
    ON_WM_DROPFILES()
END_MESSAGE_MAP()

Step 2:
   class CWISH_ENCRYPT_FOLDERApp : public CWinApp
{
public:
    CWISH_ENCRYPT_FOLDERApp();
 
// 重写
    public:
    virtual BOOL InitInstance();
 
// 实现
    afx_msg void OnDropFiles(HDROP hDropInfo);
    DECLARE_MESSAGE_MAP()
};
Step 3:
BOOL CWISH_ENCRYPT_FOLDERDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    CWnd::DragAcceptFiles();
    // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
    // 执行此操作
    SetIcon(m_hIcon, TRUE);         // 设置大图标
    SetIcon(m_hIcon, FALSE);        // 设置小图标
 
    // TODO: 在此添加额外的初始化代码
   
    return TRUE; // 除非设置了控件的焦点,否则返回 TRUE
}

Step 4:
//文件拖放并在编辑框显示拖放文件路径
void CWISH_ENCRYPT_FOLDERDlg::OnDropFiles(HDROP hDropInfo)
{
    char *lpszFileName=new char[512], cFileCount[10];  
    int nFileCount, i;  
    nFileCount=::DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 512);  
    //::AfxMessageBox(itoa(nFileCount,cFileCount,10));  
    //for (i=0; i<nFileCount; i++)  
    //{
        if(nFileCount == 1)
        {
            i = 0;
            UINT nChars=::DragQueryFile(hDropInfo, i, &lpszFileName[0], 512);  
            CString str(&lpszFileName[0], nChars);  
            m_editPath.SetWindowText(str);
        }
        else
        {
            ::AfxMessageBox("拖放文件的数量不能多于1个!",MB_OK,0);
        }      
    //}  
    ::DragFinish(hDropInfo);       //释放内存  
    i=0;  
    delete []lpszFileName;  
    //   CDialog::OnDropFiles(hDropInfo);           此语句注释掉  
 }

在程序中处理外部文件拖放

很多软件都支持外部文件的拖放,比如winamp等音频播放软件,把mp3直接拖放到程序窗口就可以直接开始播放,实现这个功能其实很简单。首先在头文件中加入消息映射:private: // User dec...
  • aniven
  • aniven
  • 2007年10月21日 12:46
  • 753

在VB.NET中实现文件拖放

               在VB.NET中实现文件拖放                            本文介绍了在VB.NET中如何实现接受拖放的文件,即从资源管理器中拖放到应用程序中的时...
  • wxx66666
  • wxx66666
  • 2005年03月17日 09:22
  • 784

如何使用HTML5进行文件拖放

实现将文件从桌面直接拖放到浏览器中是web应用开发的终极目标之一,本文作为接下来四篇文章的第一篇将解决以下问题: 1.实现将一个文件拖放到一个页面元素上 2.在JavaScript中分析拖放的...
  • goitcast
  • goitcast
  • 2012年08月27日 09:13
  • 1767

VirtualBox 实现主机和虚拟机的拖放文件

1、运行虚拟机ubuntu后,在这个窗口的设备(Devices)菜单下有一个安装增强功能(Intall Guest Additions) 选项,单击它. 这样virtualbox就把VBoxGuest...
  • fwydone
  • fwydone
  • 2014年12月19日 14:18
  • 2802

VC/MFC 实现文件拖拽获取文件名(WM_DROPFILES)

本文实现的是:拖拽文件到对话框(MFC)的编辑框,然后在编辑框中显示文件名。 首先说一下我的失败经历: 操作系统环境:win10,VS版本:Visual Studio 10,无论程序是基于...
  • hellokandy
  • hellokandy
  • 2016年11月29日 11:49
  • 1321

DELPHI中拖放的操作

拖放(DragDrop)是Windows提供的一种快捷的操作方式。作为基于Windows的开发工具,Delphi同样支持拖放操作,而且开发应用系统的拖放功能十分方便,真正体现了Delphi 的强大功能...
  • cureSHY
  • cureSHY
  • 2004年11月11日 16:34
  • 963

Qt5文件拖放学习

Qt的文本文件拖放实现,并且解决其间遇到的dropEvent不能进入的问题
  • no_pao_spite
  • no_pao_spite
  • 2017年06月26日 14:07
  • 435

虚拟机安装(VirtualBox VM)相关问题(启动,复制,拖拽)及解决

虚拟机安装一些基本问题的解决笔记
  • u010140575
  • u010140575
  • 2017年01月04日 10:30
  • 6482

win32使用文件拖拽

win32 vc使用文件拖拽
  • zengraoli
  • zengraoli
  • 2014年09月04日 18:21
  • 3185

MFC对话框接受文件拖放的方法

1、设置对话框属性为:ACCEPT FILES2、添加消息映射:ON_WM_DROPFILES()3、编写响应消息的代码如下: void CSetReleaseProjExeDlg::OnDropFi...
  • brook0344
  • brook0344
  • 2009年03月09日 10:41
  • 2525
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文件拖放处理
举报原因:
原因补充:

(最多只允许输入30个字)