关闭

文件拖放处理

标签: deleteclass框架null
342人阅读 评论(0) 收藏 举报
分类:
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);           此语句注释掉  
 }
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:25889次
    • 积分:480
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:12篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档