在C++/CX的Windows::Storage::Pickers命名空间中定义了一个FileOpenPicker类,使用此类可以新建一个文件打开选取器,并可以通过这个类里面包含的属性和函数选取一个或多个文件。下面列举了FileOpenPicker类包含的属性:

  • ViewMode属性,用于设置文件打开选取器的视图模式,此属性的值包括List(列表模式)和Thumbnail(缩略图模式)。
  • SuggestedStartLocation属性,用于设置文件打开选取器的初始位置,此属性的值包括DocumentsLibrary(文档)、ComputerFolder(计算机)、Desktop(桌面)、Downloads(下载)、HomeGroup(家庭组)、MusicLibrary(音乐库)、PicturesLibrary(图片库)和VideosLibrary(视频库)。
  • FileTypeFilter属性,获取文件打开选取器显示的文件类型集合。

接下来通过一个示例来说明如何使用FileOpenPicker类新建一个文件打开选取器,并通过文件打开选取器选取一个图片文件。在Visual Staudio 2012中新建一个Visual C++的Windows应用商店的空白应用程序项目,并命名为FilePickDemo。接着打开MainPage.xaml.cpp源文件,引用如下的头文件和命名空间:

#include "ppltasks.h"

using namespace Windows::Storage;

using namespace Windows::Storage::Pickers;

using namespace Concurrency;

using namespace Windows::System;

在上面的代码中,使用include关键字引用头文件ppltasks.h,并使用using指令引用命名空间Windows::Storage、Windows::Storage::Pickers、Concurrency和Windows::System,在新建和设置文件打开选取器时将会用到定义在这些头文件和命名空间中的类。

接下来布局前台界面,打开MainPage.xaml文件,并在Grid元素中添加如下的代码:

<Button x:Name="FileButton" Content="打开文件" FontSize="20" Margin="100,0,0,0" Click="FileButtonClick" Width="120" Height="50"></Button>

在上面的代码中,添加了一个"打开文件"按钮,用于通过文件打开选取器来选取文件。前台界面的显示效果如图20-6所示。

图20-6 "打开文件"按钮

添加了"打开文件"按钮以后,接下来为此按钮添加单击事件处理函数FileButtonClick。打开MainPage.xaml.h头文件,并添加如下的代码,用来声明FileButtonClick函数。

private:

    //选取图片文件

    void FileButtonClick(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);

声明了FileButtonClick函数以后,接着在MainPage.xaml.cpp源文件中添加FileButtonClick函数的实现代码,具体代码如下所示:

//选取图片文件

void FilePickDemo::MainPage::FileButtonClick(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)

{

    //创建文件打开选取器

    FileOpenPicker^ openPicker =ref new FileOpenPicker();

    //设置视图为缩略图

    openPicker->ViewMode = PickerViewMode::Thumbnail;

    //设置访问的初始位置为图片库

    openPicker->SuggestedStartLocation = PickerLocationId::PicturesLibrary;

    //设置可选取的文件类型

    openPicker->FileTypeFilter->Append(".png");

    openPicker->FileTypeFilter->Append(".jpg");

    //显示文件打开选取器,选择文件

    create_task(openPicker->PickSingleFileAsync()).then([this](StorageFile^ file)

    {

        //对所选取文件进行读取

    });

}

在上面的代码中,首先创建一个FileOpenPicker类的对象openPicker,并将PickerViewMode枚举中的枚举成员Thumbnail赋值给openPicker对象的ViewMode属性,设置文件打开选取器的视图模式为缩略图模式。接着将PickerLocationId枚举中的枚举成员PicturesLibrary赋值给openPicker对象的SuggestedStartLocation属性,设置文件打开选取器的初始位置为图片库。然后使用openPicker对象的FileTypeFilter属性得到文件打开选取器显示的文件类型集合,并调用Append函数将文件类型".png"和".jpg"添加到这个集合中。接下来调用openPicker对象的PickSingleFileAsync函数选取单个文件,并得到一个StorageFile类型的对象file。

运行FilePickDemo项目,单击"打开文件"按钮,将显示图20-7所示的文件打开选取器界面。

图20-7 文件打开选取器界面

Win10系列:VC++文件选取的更多相关文章

  1. Win10系列:JavaScript写入和读取文件

    正如上面的内容中所提到的,文件保存选取器用于保存文件,通过Windows.Storage.Pickers命名空间中的FileSavePicker类的pickSaveFileAsync函数可以向指定的文 ...

  2. Win10系列:JavaScript访问文件和文件夹

    在实际开发中经常会遇到访问文件的情况,因此学习与文件有关的操作对程序开发很有帮助,关于文件操作的一些基本技术,在前面章节中有专门基于C#语言的详细讲解,本节主要介绍如何使用HTML5和JavaScri ...

  3. win10没有新建文件夹

    win10没有新建文件夹 win10系统,电脑点击右键没有新建文件夹选项. 工具/原料   win10 系统台式机 方法/步骤     电脑左下角搜素出输入:cmd   出现以下画面   在命令指示符 ...

  4. Windows Store App JavaScript 开发:文件选取器

    正如前面章节C#语言中所介绍的,文件选取器是应用与系统进行交互的一个接口,通过文件选取器可以在应用中直接与文件系统进行交互,访问不同位置的文件或文件夹,或者将文件存储在指定位置.文件选取器分为对文件进 ...

  5. 【WP 8.1开发】文件选取器的使用方法

    在以往的WP7x/8.0开发中,我们使用选择器可以浏览并打开图片.音频.视频等一些特殊文件,在8.0 SDK中的运行时API(从Win 8 app中移植)尽管提供了Windows.Storage.Pi ...

  6. Windows Store App 文件选取器

    使用文件选取器可以访问除上面介绍的"应用程序存储"和"用户库"两个位置之外的本地文件或者文件夹.文件选取器是应用与系统进行交互的一个接口,通过文件选取器可以在应 ...

  7. [置顶] Android学习系列-把文件保存到SD卡上面(6)

    Android学习系列-把文件保存到SD卡上面(5) 一般多媒体文件,大文件需要保存到SD卡中.关键点如下: 1,SD卡保存目录:mnt/sdcard,一般采用Environment.getExter ...

  8. 重新想象 Windows 8 Store Apps (26) - 选取器: 自定义文件选取窗口, 自定义文件保存窗口

    原文:重新想象 Windows 8 Store Apps (26) - 选取器: 自定义文件选取窗口, 自定义文件保存窗口 [源码下载] 重新想象 Windows 8 Store Apps (26) ...

  9. 重新想象 Windows 8 Store Apps (25) - 选取器: 文件选取窗口, 文件夹选取窗口, 文件保存窗口

    原文:重新想象 Windows 8 Store Apps (25) - 选取器: 文件选取窗口, 文件夹选取窗口, 文件保存窗口 [源码下载] 重新想象 Windows 8 Store Apps (2 ...

随机推荐

  1. pipenv+sublime text3 配置

    这半年用docker管理开发环境 + vs code/编码 git + pycharm跑unittest 优点多多,实现了关注点分离 1 dockfile 直接隔离成独立的image 2 code对g ...

  2. vscode 的tab与空格设置

    为了python 的pep8 标准,把tab键输入从\t的制表符 转为4个空格. 1在vscode下边栏点击 “空格” 在上面选项里设置 使用空格缩进, 以及可以 将缩进转换为空格 2在“文件-> ...

  3. PCB板的三种敷铜方法解析

    1 do not pour over all same net objects:仅仅对相同网络的焊盘进行连接,其他如覆铜.导线不连接. 2 pour over all same net objects ...

  4. 00-python-内置函数笔记

    01.enumerate()函数用于将一个可遍历的数据对象(如 列表.元组或字符串)组合为一个索引序列,同时列出数据和数据包下标,一般用在for循环中 for i, element in enumer ...

  5. python float转为decimal

    73.2413793103 ======= 73.2414 <type 'float'> ======= <class 'decimal.Decimal'> 当断言这两个值相等 ...

  6. HeadFIrst Ruby 第七章总结 hashes

    前言 这一章节介绍了 Ruby 中 hash 这一数据类型的用法和特征. Hash 的定义 与 array 的对比 最大的不同: An array can only use integers as i ...

  7. 新C# 操作Excel属性

    C# 操作Excel属性 数字(Range.NumberFormatlocal 属性) 常规:Range.NumberFormatlocal = "G/通用格式" 数值:Range ...

  8. pointer-events

    在做移动端的页面时,经常会遇到点击(touch)一个弹出的层,在上面触发点击(touch)事件,当弹出层关闭之后点击(touch)事件会穿透到下面的层,这时候如果下一层的某个元素也绑定了点击(touc ...

  9. bedtools神器 | gtf转bed | bed文件运算

    我们生信技能书有一篇介绍bedtools的文章,可以在微信里搜着看下,非常有用. http://bedtools.readthedocs.io/en/latest/ gtf转bed用Linux命令完全 ...

  10. idea ----> 学习笔记

    使用的是社区版的idea 1. 2.关键点之二:配置artifacts.参照 <使用IDEA2017创建java web+Maven项目>http://blog.csdn.net/love ...