65.9K
CodeProject 正在变化。 阅读更多。
Home

类似 WinZip 的解压对话框

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.55/5 (7投票s)

2005年9月21日

公共领域

2分钟阅读

viewsIcon

37950

downloadIcon

569

尝试创建一个类似 WinZip 的解压对话框。

Sample Image

引言

不久前,我为个人使用编写了一个备份工具,并且想要一个类似 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 - 首次发布。

就此告别

抱歉我的英语不好 :)

© . All rights reserved.