文件拖放处理

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);           此语句注释掉  
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值