VC实现文件拖放
来源:互联网 发布:贵金属手机交易软件 编辑:程序博客网 时间:2024/05/22 15:05
---- DragQueryFile 原 型 为:
UINT DragQueryFile( HDROP hDrop,
UINT iFile,
LPTSTR lpszFile,
UINT cch )
----其 中hDrop 是 指 向 拖 动 文 件 结 构 的 句 柄;
---- iFile 是 以0 开 始 的 被 拖 动 文 件 的 序 号, 因 为 一 次 可 能 拖
动 多 个 文 件。 当 此 参 数 设 为0xFFFFFFFF, 则 函 数 返 回 拖 动 文 件
的 数 量;
---- lpszFile 是 指 向 文 件 名 的 缓 冲 区;
---- cch 是 文 件 名 缓 冲 区 的 大 小, 即 文 件 名 的 字 符 数。
----以 下 给 出 一 个 完 整 的 实 例, 程 序 运 行 后 弹 出 一 个 对 话
框, 可 以 拖 动 任 意 数 量 的 文 件 或 目 录 到 上 面, 松 开 鼠 标 后,
程 序 先 显 示 拖 放 文 件 的 数 量, 然 后 将 拖 放 的 文 件 名 全 部 显
示 在 一 个List Box 控 件 中。 具 体 步 骤 如 下:
建 立 一 个 基 于 对 话 框 的 工 程drop, 然 后 其 他 选 项 全 部 用 缺 省
值。
选 中IDD_DROP_DIALOG 对 话 框 中Extended Styles 的Accept files 属 性。
给IDD_DROP_DIALOG 对 话 框 添 加 一 个List Box 控 件IDC_LIST1。
在ClassWizard 中 给CdropDlg 类 添 加 成 员 变 量m_list, 类 型 为 ClistBox。
给CdropDlg 类 中 增 加 处 理Windows 消 息WM_DROPFILES 的 函 数, 接 受 系
统 给 出 的 默 认 名 字OnDropFiles, 然 后 输 入 以 下 代 码:
void CDropDlg::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 + +)
{
UINT nChars=::DragQueryFile (hDropInfo,i,
&lpszFileName[0],512);
CString str( &lpszFileName[0],nChars);
m_List.AddString(str);
}
::DragFinish (hDropInfo); // 释 放 内 存
i=0;
delete []lpszFileName;
// CDialog::OnDropFiles(hDropInfo);
此 语 句 注 释 掉
}
----注 意 程 序 中 的::DragFinish (hDropInfo); 语 句 是 必 不 可 少 的, 它
用 于 释 放Windows 为 处 理 文 件 拖 放 而 分 配 的 内 存。
----运 行 此 程 序 可 以 看 到, 拖 动 的 文 件 只 要 一 进 入 对 话 框 的
边 界, 鼠 标 上 立 刻 会 现 一 个" +", 在 对 话 框 上 的 任 意 位 置 释
放 鼠 标, 拖 放 的 文 件 都 会 被 接 受, 完 全 解 决 了《 用 MFC 实 现 文
件 拖 放 到 编 辑 框》 必 须 将 文 件 拖 到 编 辑 框 的 不 足; 而 且 拖 放
是 通 过 调 用Windows API 函 数 实 现 的, 因 此 程 序 非 常 健 壮, 几 乎
没 有 什 么 维 护 量。
UINT DragQueryFile( HDROP hDrop,
UINT iFile,
LPTSTR lpszFile,
UINT cch )
----其 中hDrop 是 指 向 拖 动 文 件 结 构 的 句 柄;
---- iFile 是 以0 开 始 的 被 拖 动 文 件 的 序 号, 因 为 一 次 可 能 拖
动 多 个 文 件。 当 此 参 数 设 为0xFFFFFFFF, 则 函 数 返 回 拖 动 文 件
的 数 量;
---- lpszFile 是 指 向 文 件 名 的 缓 冲 区;
---- cch 是 文 件 名 缓 冲 区 的 大 小, 即 文 件 名 的 字 符 数。
----以 下 给 出 一 个 完 整 的 实 例, 程 序 运 行 后 弹 出 一 个 对 话
框, 可 以 拖 动 任 意 数 量 的 文 件 或 目 录 到 上 面, 松 开 鼠 标 后,
程 序 先 显 示 拖 放 文 件 的 数 量, 然 后 将 拖 放 的 文 件 名 全 部 显
示 在 一 个List Box 控 件 中。 具 体 步 骤 如 下:
建 立 一 个 基 于 对 话 框 的 工 程drop, 然 后 其 他 选 项 全 部 用 缺 省
值。
选 中IDD_DROP_DIALOG 对 话 框 中Extended Styles 的Accept files 属 性。
给IDD_DROP_DIALOG 对 话 框 添 加 一 个List Box 控 件IDC_LIST1。
在ClassWizard 中 给CdropDlg 类 添 加 成 员 变 量m_list, 类 型 为 ClistBox。
给CdropDlg 类 中 增 加 处 理Windows 消 息WM_DROPFILES 的 函 数, 接 受 系
统 给 出 的 默 认 名 字OnDropFiles, 然 后 输 入 以 下 代 码:
void CDropDlg::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 + +)
{
UINT nChars=::DragQueryFile (hDropInfo,i,
&lpszFileName[0],512);
CString str( &lpszFileName[0],nChars);
m_List.AddString(str);
}
::DragFinish (hDropInfo); // 释 放 内 存
i=0;
delete []lpszFileName;
// CDialog::OnDropFiles(hDropInfo);
此 语 句 注 释 掉
}
----注 意 程 序 中 的::DragFinish (hDropInfo); 语 句 是 必 不 可 少 的, 它
用 于 释 放Windows 为 处 理 文 件 拖 放 而 分 配 的 内 存。
----运 行 此 程 序 可 以 看 到, 拖 动 的 文 件 只 要 一 进 入 对 话 框 的
边 界, 鼠 标 上 立 刻 会 现 一 个" +", 在 对 话 框 上 的 任 意 位 置 释
放 鼠 标, 拖 放 的 文 件 都 会 被 接 受, 完 全 解 决 了《 用 MFC 实 现 文
件 拖 放 到 编 辑 框》 必 须 将 文 件 拖 到 编 辑 框 的 不 足; 而 且 拖 放
是 通 过 调 用Windows API 函 数 实 现 的, 因 此 程 序 非 常 健 壮, 几 乎
没 有 什 么 维 护 量。
0 0
- vc 实现文件拖放
- VC实现文件拖放
- VC实现文件拖放
- vc 实现文件拖放操作: ondropfiles
- vc++中实现文件拖放功能
- VC实现文件拖放的方法
- (转)VC中实现文件拖放功能
- VC实现文件拖放的方法 (转)
- 文件拖放编程实现
- .Net实现文件拖放
- 实现文件拖放
- c#实现文件拖放
- 如何实现鼠标拖放文件
- 如何实现鼠标拖放文件
- [转]QT实现拖放文件
- VB的文件拖放实现
- VC下在对话框上实现接受文件拖放 (Drop files)
- C#实现文件拖放并打开文件
- Adblock Plus的设置
- hdoj 3789 奥运排序问题
- 面试题50:树中两个结点的最低公共祖先
- solr的简单使用说明
- 删除编辑文件警告Swap file “…” already exists!
- VC实现文件拖放
- ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结
- HttpServlet中的几个常用方法
- CIDR和NAT协议浅析
- CUDA 与 OpenCL 区别
- GDI+创建字体的方法
- ping源代码完全解析
- Swift流水账
- 文章标题