您的位置:首页 > 其它

vc 实现文件拖放

2009-01-15 11:46 288 查看
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); 此语句注释掉
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: