vc 实现文件拖放

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);           此语句注释掉  
 }

 

你可能感兴趣的:(框架,null,delete,Class)