• 快速浏览文件夹


    Browse for folder quickpick window 介绍 我从事SizeMe项目当用户请求的一个特性。他要求一个预定义列表目录,他希望扫描。我刚刚读完了这篇文章定制“浏览文件夹”对话框,我的想法只是定制通用对话框。这里是结果。记住,普通对话框所示的安装语言窗口。这张照片显示的对话框和挪威的语言。我也想谢谢汉斯·迪特里希他的文章为SHBrowseForFolder XBrowseForFolder——包装器。的一些代码中使用该项目一直受到他的工作。 使用的代码 该项目可用于一个MFC项目或Win32。(该项目只有与Visual Studio 6.0测试环境。我不知道它将新版本的Visual Studio工作,但我想是这样的)。 第一个文件Dirbrowse.cpp和DirBrowse.h添加到您的项目,然后包括DirBrowse.h。有两个公共功能,您需要使用: 隐藏,复制Code

    BOOL Show(char *szInitDir="");

    函数显示的结果如果用户按下OK,和假取消/关闭。szInitDir是可选的,选择的startdir浏览器。 隐藏,复制Code

    char* GetSelectedDir();

    GetSelectedDir函数返回一个字符串的选择路径。 样本 这是我写的快速win32示例处理类: 隐藏,复制Code

    #include <spanclass="code-string">"stdafx.h"</span>
    #include <spanclass="code-string">"..DirBrowse.h"</span>
    
    #include <spanclass="code-keyword"><stdio.h></span>
    
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
         // TODO: Place code here.
        CDirBrowse m_dirbrowser(NULL, hInstance);
        
        if(m_dirbrowser.Show()==TRUE)
        {
            char Text[MAX_PATH*2];
            sprintf(Text, "You selected folder: %s", m_dirbrowser.GetSelectedDir());
            MessageBox(NULL, Text, "Browse for folder", MB_OK);
        }
        else
        {
            MessageBox(NULL, "You pressed the cancel button!", "Browse for folder", MB_OK);
        }
    
        return 0;
    }

    它是那么简单。看看这个项目检查的MFC版本相同。 头定制 当我创建的类可以重用,我总是创建很多#定义。这门课也不例外。这是定义列表: 隐藏,收缩,复制Code

    //#1
    #define BROWSE_WIDTH            640
    #define BROWSE_HEIGHT            420
    #define BROWSE_LISTVIEW_SIZE        0.65
    #define BROWSE_BORDER_VERT        4
    #define BROWSE_BORDER_HORI        2
    #define BROWSE_MAXENTRIES        20
    
    //#2
    //This is the message that we start with
    #define BROWSE_MESSAGE            10101
    
    //#3
    //The name of our hypertext class
    #define STATIC_HYPERTEXT_WINDOW_CLASS    "STATIC_HYPERTEXT"
    
    //#4
    //This is the font & size we use for showing the info
    #define BROWSE_FONTNAME            "Verdana"
    #define BROWSE_FONTSIZE            12
    
    //#5
    //The colors used
    #define BROWSE_SELECTCOLOR        RGB(0,0,255)
    #define BROWSE_SELECTCOLORHOVER        RGB(50,105,255)
    #define BROWSE_DIRCOLOR            RGB(0,0,200)
    #define BROWSE_DIRCOLORHOVER        RGB(100,100,250)
    
    //#6
    //The registry variables
    #define BROWSE_REGISTRY_ROOT        HKEY_CURRENT_USER
    #define BROWSE_REGISTRY_PATH        "Software\DirBrowser"
    
    //#7
    //Strings used
    #define BROWSE_TEXT_SHORTCUTS       "Shortcuts"
    #define BROWSE_TEXT_HELP            "Please select a folder in the list and press the
                                        arrow to save the directory for a quickpick later on"
    #define BROWSE_TEXT_HELP_CAPTION    "Browse for folder help"
    
    #define BROWSE_TEXT_HELP_TOOLTIP    "Press this to save selected path as a shortcut"
                                        //Must not exceed 79 chars!!! 

    每组如下解释: 定义了描述默认值组# 1 BROWSE_WIDTH BROWSE_HEIGHT, BROWSE_LISTVIEWSIZE宽度/高度是窗口的大小。ListView-size是目录的宽度的百分比。640、420、0.65(宽度的百分比)BROWSE_BORDER_VERT BROWSE_BORDER_HORI边界变量之间像素控制在垂直和水平方向上。4,2 BROWSE_MAXENTRIES MaxEntries快速选择的大小我们可以显示在屏幕上(不应该比屏幕可以显示条目)20(应该足以让每个人)组# 2 BROWSE_MESSAGE信息是内部消息,我们使用的控件。使用增加,所以它开始于10101年,10102年和10101年组# 3 STATIC_HYPERTEXT_WINDOW_CLASS超文本窗口类是类的内部名称处理hypertext-class。只是改变这个项目中如果你有重复的名字。“STATIC_HYPERTEXT”组# 4 BROWSE_FONTNAME BROWSE_FONTSIZE这个字体,大小超文本中使用的类。它不会检查字体确实存在,所以一定要输入一个有效的名字。Verdana, 12组# 5 BROWSE_SELECTCOLOR BROWSE_SELECTCOLORHOVER, BROWSE_DIRCOLOR BROWSE_DIRCOLORHOVER颜色超文本类。实际上分为选择器和目录。RGB (0, 0255), RGB (50105255), RGB (0, 0200), # 6 BROWSE_REGISTRY_ROOT RGB(100100250)组,BROWSE_REGISTRY_PATH通往你想要保存配置。这通常是改变因为你不想dirbrowser加载变量存储在同一个地方不同的项目中使用。HKEY_CURRENT_USER,“软件 DirBrowser”(这总是应该改变!)组# 7 BROWSE_TEXT_SHORTCUTS BROWSE_TEXT_HELP、BROWSE_TEXT_HELP_CAPTION BROWSE_TEXT_HELP_TOOLTIP以来我没有犯了一个“多语言”支持在这个项目中,你可以改变这里使用的文本。“快捷方式”,“请在列表中选择一个文件夹,按箭头来保存的目录quickpick之后”,“浏览文件夹的帮助”,“按下这个选择保存路径作为快捷方式”(不得超过79字符) 的利益点 我发现了一个小错误而编译项目的发布版本。看看这段代码: 隐藏,复制Code

    if(pMe->MessageIsOdd == FALSE)
    {
        if(nID % 2 == 0)
            MsgIsOdd = FALSE;
        else
            MsgIsOdd = TRUE;
    }
    else
    {
        if(nID % 2 == 0)
            MsgIsOdd = TRUE;
        else
            MsgIsOdd = FALSE;
    }

    不应该有任何错误,但一些研究之后,我发现的第一部分if-sentence是唯一一个被调用。我需要把它为了避免这种错误是这样的: 隐藏,复制Code

    if(pMe->MessageIsOdd == FALSE)
    {
        //...
    }
    if(pMe->MessageIsOdd == TRUE)
    {
        //...
    }

    如果有人有答案,请让我知道。我使用Visual Studio 6.0 c++ SP5 + UINT64处理器包补丁。 历史 v1.0,最初版本 本文转载于:http://www.diyabc.com/frontweb/news6912.html

  • 相关阅读:
    DTOJ #3702. 月读(tsukuyomi)
    DTOJ #2311. 兔子与樱花 ( sakura )
    DTOJ #2416. 点燃的火焰(flame)
    dtoi4537 「TJOI / HEOI2016」树
    中科燕园gis外包------北京市人口普查地理信息系统
    中科燕园gis外包【动态标绘演示系统】v2.0 Flex版
    中科燕园GIS外包-----基于ArcGIS的应急平台
    arcgis server
    《深入理解ES6》之箭头函数
    【转】浏览器的工作原理:新式网络浏览器幕后揭秘
  • 原文地址:https://www.cnblogs.com/Dincat/p/13467457.html
Copyright © 2020-2023  润新知