Win10系列:VC++调用自定义组件3
(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的更多相关文章
- Win10系列:VC++调用自定义组件2
(2)C#调用WinRT组件 在解决方案资源管理器中右键点击解决方案图标,选择添加一个Visual C#的Windows应用商店的空白应用程序项目,并命名为FileCS.接着右键点击FileCS项目的 ...
- Win10系列:VC++调用自定义组件1
通过20.9.1小节中的代码和步骤编写了一个名为"FilePickerComponent"的WinRT组件,接下来将在上一小节所新建的项目基础上,继续介绍如何在不同的语言所编写的应 ...
- 微信小程序自定义组件的使用以及调用自定义组件中的方法
在写小程序的时候,有时候页面的内容过多,逻辑比较复杂,如果全部都写在一个页面的话,会比较繁杂,代码可读性比较差,也不易于后期代码维护,这时候可以把里面某部分功能抽出来,单独封装为一个组件,也就是通常说 ...
- 微信小程序页面调用自定义组件内的事件
微信小程序页面调用自定义组件内的事件 page page.json { "usingComponents": { "my-component": ". ...
- Win系列:VC++编写自定义组件
在Visual Studio 中新建一个Visual C++的 Windows应用商店的Windows运行时组件项目,并将项目命名为FilePickerComponent.然后在项目的解决方案资源管理 ...
- Yii2.0 高级模版编写使用自定义组件(component)
翻译自:http://www.yiiframework.com/wiki/760/yii-2-0-write-use-a-custom-component-in-yii2-0-advanced-tem ...
- 微信小程序自定义组件,提示组件
微信小程序自定义组件,这里列举了一个常用的提示自定义组件,调用自定义组件中的方法和字段.仅供参考和学习. 编写组件: 在根目录下添加“components”目录,然后像添加Page页面一样添加自定义组 ...
- React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发
React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发 2016/09/23 | React Native技术文章 | Sky丶清| 4 条评论 | 1 ...
- Android自定义组件系列【7】——进阶实践(4)
上一篇<Android自定义组件系列[6]--进阶实践(3)>中补充了关于Android中事件分发的过程知识,这一篇我们接着来分析任老师的<可下拉的PinnedHeaderExpan ...
随机推荐
- ZZNU 2095 : 我只看看不写题
把所有时间加起来,最后从大到小排序,一定要把大的先减去.注意花费的时间都是1,这一秒用过就不能再用了,所有用到了并查集的部分知识 #include<iostream> #include&l ...
- VS2010.STL::list的一个bug
1.ParameterAnswer_Parse(...) 下 FlistParameterOffset.clear(); 出错(list<DWORD>.clear()) (https:// ...
- Node.js 常用命令
1. 查看node版本 node --version 2. 查看npm 版本,检查npm 是否正确安装. npm -v 3. 安装cnpm (国内淘宝镜像源),主要用于某些包或命令程序下载不下来的情况 ...
- Android 虹软免费人脸识别 SDK开发
目前我们的应用内使用了 ArcFace 的人脸检测功能,其他的我们并不了解,所以这里就和大家分享一下我们的集成过程和一些使用心得集成ArcFace FD 的集成过程非常简单在 ArcFace FD 的 ...
- ROC曲线(receiver-operating-characteristic curve)-阈值评价标准(转)
转自:http://blog.csdn.net/abcjennifer/article/details/7359370 ROC曲线指受试者工作特征曲线 / 接收器操作特性曲线(receiver ope ...
- English Voice of <<All Of Me>>
"All Of Me"我的一切 [Verse 1:]What would I do without your smart mouth没有你的蜜语甜言,我该怎办Drawing me ...
- JDK常用工具
JDK的命令行工具 jps 查看正在使用的jvm机器进程号. 常用命令,-l显示正在运行的jar包或者软件(基于jvm),-v显示当前进程详细的jvm参数 jps -l jps -v javap 反汇 ...
- php求取时间范围并传入数据库,页面上显示几天几月几年
$startTime = $_GPC['h_time']['start']; $endTime = $_GPC['h_time']['end']; echo $startTime.'<hr> ...
- 【洛谷p1403 】【AHOI2005】约数研究
(有种失踪人口回归的感觉) 约束研究[传送门] (不过好像没有人注意到我这个蒟蒻) 好的不管它啦 最近学数论比较多,所以可能会有好多好多的数论题???(不存在的) 行吧上算法标签: 数论 数论 ...
- Building Fire Stations ZOJ - 3820 (二分,树的直径)
大意: 给定树, 求两个点, 使得所有其他的点到两点的最短距离的最大值尽量小. 二分答案转为判定选两个点, 向外遍历$x$的距离是否能遍历完整棵树. 取直径两段距离$x$的位置bfs即可. #incl ...