(3)C++/CX调用WinRT组件

在解决方案资源管理器中右键点击解决方案图标,选择添加一个Visual C++的Windows应用商店的空白应用程序项目,并命名为FileCPP。接着右键点击FileCPP项目的项目名,选择"引用",弹出"FileCPP属性页"窗口,在此窗口中单击"添加新引用"按钮,并在出现的"添加引用"窗口中勾选"解决方案"的"项目"栏中的FilePickerComponent选项,然后单击"确定"按钮,将名为"FilePickerComponent"的WinRT组件引入到项目中。

接着打开MainPage.xaml文件,指定Grid元素的Background属性为"White",并在此元素中添加如下的代码,用于布局前台界面。

<TextBlock FontSize="40" Foreground="Black" HorizontalAlignment="Left" Height="72" Margin="317,0,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="774" Text="C++/CX中调用WinRT组件"/>

<ScrollViewer Width="774" Margin="317,72,275,352" HorizontalAlignment="Center" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Visible" BorderBrush="LightBlue" BorderThickness="3">

<TextBlock x:Name="FileText" FontSize="35" TextWrapping="Wrap" Foreground="Black"/>

</ScrollViewer>

<Button x:Name="OpenFileButton" Click="PickFileClick" Content="打开文件" Margin="502,451,0,240" Foreground="Black" BorderBrush="LightBlue" BorderThickness="3" FontSize="35" Height="77" Width="178"></Button>

<Button x:Name="ShowFileButton" Click="ShowFileClick" Content="读取文件" Margin="740,451,0,240" Foreground="Black" BorderBrush="LightBlue" BorderThickness="3" FontSize="35" Height="77" Width="178"></Button>

在上面的代码中,添加一个TextBlock控件和两个按钮,其中TextBlock控件用来显示读取到的文件中的内容。两个按钮分别为"打开文件"和"读取文件","打开文件"按钮用来通过文件打开选取器选择文件,"读取文件"按钮用来将读取到的文件内容显示到TextBlock控件中。

布局了前台界面以后,接下来打开MainPage.xaml.h头文件,并添加如下的代码:

private:

    //声明成员变量filePicker

    FilePickerComponent::FilePicker^ filePicker;

public:

    //打开文件

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

    //显示文件内容

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

在上面的代码中,使用private关键字声明一个FilePicker类型的私有成员变量filePicker,然后使用public关键字声明两个公有的函数PickFileClick和ShowFileClick,分别用于读取文件和将读取到的文件内容显示到前台界面中。

添加了上述的代码以后,接下来打开MainPage.xaml.cpp源文件,在MainPage构造函数中创建FilePicker类的对象filePicker。代码如下所示:

MainPage::MainPage()

{

    InitializeComponent();

    //创建FilePicker类的对象

    filePicker = ref new FilePickerComponent::FilePicker();

}

接下来在MainPage.xaml.cpp源文件中,分别为"打开文件"按钮和"读取文件"按钮添加单击事件处理函数PickFileClick和ShowFileClick,具体代码如下所示:

//打开文件

void FileCPP::MainPage::PickFileClick(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)

{

    //调用FilePicker类中的ReadFile函数

    filePicker->ReadFile();

}

//将文件内容显示到TextBlock控件中

void FileCPP::MainPage::ShowFileClick(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)

{

    FileText->Text = filePicker->FileContent;

}

在PickFileClick函数中调用filePicker对象的ReadFile函数来读取文件,接着在ShowFileClick函数中将filePicker对象的FileContent属性赋值给TextBlock控件的Text属性,把读取到的文件内容显示到TextBlock控件中。

运行FileCPP项目,单击"打开文件"按钮,在文件打开选取器窗口中选取一个文本文件Text.txt,接着单击"读取文件"按钮将文本文件中的内容显示到TextBlock控件中,如图20-27所示。

图20-27 C++/CX调用WinRT组件

Win10系列:VC++调用自定义组件3的更多相关文章

  1. Win10系列:VC++调用自定义组件2

    (2)C#调用WinRT组件 在解决方案资源管理器中右键点击解决方案图标,选择添加一个Visual C#的Windows应用商店的空白应用程序项目,并命名为FileCS.接着右键点击FileCS项目的 ...

  2. Win10系列:VC++调用自定义组件1

    通过20.9.1小节中的代码和步骤编写了一个名为"FilePickerComponent"的WinRT组件,接下来将在上一小节所新建的项目基础上,继续介绍如何在不同的语言所编写的应 ...

  3. 微信小程序自定义组件的使用以及调用自定义组件中的方法

    在写小程序的时候,有时候页面的内容过多,逻辑比较复杂,如果全部都写在一个页面的话,会比较繁杂,代码可读性比较差,也不易于后期代码维护,这时候可以把里面某部分功能抽出来,单独封装为一个组件,也就是通常说 ...

  4. 微信小程序页面调用自定义组件内的事件

    微信小程序页面调用自定义组件内的事件 page page.json { "usingComponents": { "my-component": ". ...

  5. Win系列:VC++编写自定义组件

    在Visual Studio 中新建一个Visual C++的 Windows应用商店的Windows运行时组件项目,并将项目命名为FilePickerComponent.然后在项目的解决方案资源管理 ...

  6. Yii2.0 高级模版编写使用自定义组件(component)

    翻译自:http://www.yiiframework.com/wiki/760/yii-2-0-write-use-a-custom-component-in-yii2-0-advanced-tem ...

  7. 微信小程序自定义组件,提示组件

    微信小程序自定义组件,这里列举了一个常用的提示自定义组件,调用自定义组件中的方法和字段.仅供参考和学习. 编写组件: 在根目录下添加“components”目录,然后像添加Page页面一样添加自定义组 ...

  8. React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发

    React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发   2016/09/23 |  React Native技术文章 |  Sky丶清|  4 条评论 |  1 ...

  9. Android自定义组件系列【7】——进阶实践(4)

    上一篇<Android自定义组件系列[6]--进阶实践(3)>中补充了关于Android中事件分发的过程知识,这一篇我们接着来分析任老师的<可下拉的PinnedHeaderExpan ...

随机推荐

  1. cookie的常用操作

    cookie介绍: 1. cookie的简单介绍就是把用户的登录信息缓存在本机的浏览器中,且最大容量为4KB, 2. 这种存储是不安全的,通常一般会进行加密处理,但是依旧不能做到安全,所以一般要优先考 ...

  2. js_提示是否删除小案例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Swing使用Substance外观包异常问题

    问题一: 今天更新我的Java版QQ,在网上找到了Substance外观包,效果不错,直接用了,可是设置水印问题时就出现问题,网上有现成的例子 JFrame.setDefaultLookAndFeel ...

  4. 学习笔记31—endnote设置

    修改文献引用设置: JournalArticle: Author. (Year). Title. [Translated Title]. [Reviewed Item]. Journal|, Volu ...

  5. thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes如何解决

    thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes如何解决 一.总结 一句话总结:清缓存就好了,所以框架有问题可以考虑清缓存 清缓存 ...

  6. USBCAN的使用和上位机开发(MFC)

    USBCAN使用手册 参见:https://blog.51cto.com/12572800/2062839 1. USB CAN软件安装与硬件接线 USB CAN是常用的CAN测试工具.它的软件资料存 ...

  7. Android中SharedPerforences的简单使用示例 --Android基础

    SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedP ...

  8. LeetCode--345--反转字符串中的元音字母

    问题描述: 编写一个函数,以字符串作为输入,反转该字符串中的元音字母. 示例 1: 输入: "hello" 输出: "holle" 示例 2: 输入: &quo ...

  9. webpack基础概念

    中文文档:https://webpack.docschina.org/concepts/ 一个现代 JavaScript 应用程序的静态模块打包器(static module bundler). 在 ...

  10. Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"解决方法

    出现这个错误的原因主要是因为你的本地Gradle和项目的Gradle地址不一样,要么就是没找到 所以需要更改下你的Gradle地址 如图需要将你的Gradle版本的地址改为,你本地的Gradle地址即 ...