类似 WinZip 的解压对话框
尝试创建一个类似 WinZip 的解压对话框。
引言
不久前,我为个人使用编写了一个备份工具,并且想要一个类似 WinZip 的解压文件对话框。我在互联网上寻找了一些解决方案,但没有找到任何适合我的。所以,我决定自己编写它,并且想分享这段代码,因为它似乎可能有用。我首先理解到的事情是,使用 Windows Shell 并不简单,所以我一直在 CodeProject 上寻找解决方案。我找到了 Paolo Messina 的一个优秀的 MFC CShellTreeCtrl
示例,所以我把它移植到 WTL,它是我的对话框的基础。我使用了 VC 7.1。这段代码无法在 VC 6.0 上编译,因为 Till Krullmann 的 Dialog Layout 库需要 ATL 7.0 集合类。
致谢
我想感谢 Paolo Messina 的 CShellTreeCtrl
,没有它,我的工作会更加复杂,也感谢 Till Krullmann 的令人惊叹的 Dialog Layout 库,它被用于对话框调整大小。我为我不能亲自感谢所有我使用的代码的人们道歉,因为我在大约四年前编写了 CVxButton
类,为了给我的应用程序提供 XP 的外观,但其中大部分我都在 CodeProject 上找到的。
使用代码
要在应用程序中使用这段代码,将文件夹“WaitTree”、“DialogLayout”和“Mtl”复制到您的项目文件夹中,并将这些文件夹中的所有文件添加到项目中。复制并添加文件“ExtractDialog.h”和“ExtractDialog.cpp”到项目中,并包含“ExtractDialog.h”。确保包含文件“atlcoll.h”、“atlstr.h”和“atlmisc.h”。在包含“atlmisc.h”之前定义 _WTL_NO_CSTRING
。在您想要的地方声明 CExtractDialog
变量 - 这就是全部:调用 DoModal
函数,您将看到对话框。对话框关闭后,可以检索所有选定的设置。
#include "ExtractDialog.h" BOOL foo(LPCTSTR pszInitialFolder = _T("")) { CExtractDialog dlg; dlg.SetFolderName(pszInitialFolder); if(dlg.DoModal() == IDOK) { CString strWildCard; CString strFolder = dlg.GetFolderName(); if(dlg.GetUseSelected()) strWildCard = dlg.GetFilesMask(); //Do Something.............. return TRUE; } return FALSE; }
免责声明
本软件及其附带的文件按“原样”分发,不提供任何形式的保证,无论是明示的还是暗示的。对于可能造成的任何损害,概不负责。用户必须承担使用本软件的全部风险。
历史
- 版本 1.0 - 首次发布。
就此告别
抱歉我的英语不好 :)