(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. Ubuntu16 源码方式安装postgresql数据库

    依赖工具库 注意:默认用户名是postgres,以下命令是Ubuntu操作系统中的命令 make GCC Zlib 安装命令:sudo apt-get install zlib1g-dev注意有些软件 ...

  2. mysql 清空表——truncate 与delete的区别

    清空表 truncate table [表名]: delete from [表名]: 注: truncate是整体删除(速度较快), delete是逐条删除(速度较慢). truncate不写服务器l ...

  3. 网页常见单位: px em pt % rem vw、vh、vmin、vmax , rem 使用

    1.网页常见单位:  px  em  pt    vw\vh   rem 1.1 px单位名称为像素,相对长度单位,像素(px)是相对于显示器屏幕分辨率而言  (最终解析单位) em单位名称为相对长度 ...

  4. 基于虹软 2.0 人脸识别猜年龄 java版 demo

    首先感谢虹软,是你们提供这么好的SDK支撑了我们的想象力! 这是一个用javav编写的可视化应用,用户通过自己的脸和计算机进行交互,计算机则通过萌萌女孩的语音和用户对话.核心程序就是利用ArcFace ...

  5. PHP加密函数

    单向散列加密 单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出.这个散列计算是单向的,即不能对固定长度的输出进行计算从而获取输入信息. 特征:雪崩效应.定长输出和不可逆 作用: ...

  6. English Voice of <<Bye Bye Bye>>

    Bye Bye Bye - Lovestoned When i see you, looking back at me 当我看到你回首看我时 Watching this eye still 彼此凝视 ...

  7. LeetCode--258--各位相加*

    问题描述: 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由于 2 ...

  8. Vue音乐项目笔记(二)

    1. Vuex https://blog.csdn.net/weixin_40814356/article/details/80347366 编写: 然后,在main.js中引入 在组件中改变stat ...

  9. 原生JS实现瀑布流布局

    瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部. 1.首先瀑布流所有的图片应该保持宽度一致,高 ...

  10. bzoj3676: [Apio2014]回文串 pam

    题意:字符串s.我们定义s的一个子串t的"出 现值"为t在s中的出现次数乘以t的长度.请你求出s的所有回文子串中的最 大出现值. 题解:pam板子题 //cnt数组表示该节点代表的 ...