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

(1)JavaScript调用WinRT组件

在解决方案资源管理器中右键点击解决方案图标,选择添加一个JavaScript的Windows应用商店的空白应用程序项目,并命名为FileJS。接着右键点击FileJS项目的项目名,选择"添加引用",弹出"引用管理器-FileJS"窗口,并在"解决方案"的"项目"栏中选择FilePickerComponent组件,单击"确定"按钮,将这个WinRT组件引入到项目中。

引入WinRT组件后,接下来打开default.html文件,并在body元素中添加如下的前台代码,用于布局前台界面。

<div>

<h1>JavaScript中调用WinRT组件</h1>

</div>

<div>

<textarea id="FileText" style="font-size: 40px" rows="10" cols="40"></textarea>

</div>

<div>

<button id="FileReaderButton" style="font-size: 40px">打开文件</button>

<button id="ShowFileButton" style="font-size: 40px">读取文件</button>

</div>

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

添加了上述的前台代码以后,接下来打开default.css文件,为前台的控件添加样式,代码如下所示:

body {

background: #fff;

}

#FileText {

color: #000;

border: 3px solid LightBlue;

word-wrap: break-word;

}

#FileReaderButton {

color: #000;

border: 3px solid LightBlue;

}

#ShowFileButton {

color: #000;

border: 3px solid LightBlue;

}

h1 {

color: #000;

}

在上面的代码中,首先设置body元素的背景为白色,然后设置id为FileText的textarea控件的字体颜色为黑色,并设置此textarea控件的边框颜色为淡蓝色,边框粗细为3px,接着设置此textarea控件中的文本可以自动换行。再分别设置"打开文件"按钮和"读取文件"按钮的字体颜色为黑色,按钮的边框颜色为淡蓝色。最后设置h1元素中的字体颜色为黑色。

添加了上面的前台代码以后,接着在解决方案资源管理器窗口中右键点击FileJS项目下的js文件夹图标,在弹出的菜单栏中选中"添加",并在"添加"的子菜单栏中选择"新建项",然后在出现的"添加新项"窗口中选中"JavaScript文件",添加名为"script.js"的文件。接下来打开script.js文件,并添加如下的代码:

(function () {

WinJS.UI.Pages.define("default.html", {

// 每当用户导航至此页面时都要调用此功能。它

// 使用应用程序的数据填充页面元素。

ready: function (element, options) {

var openButton = document.getElementById("FileReaderButton");

openButton.addEventListener("click", ReadFile, false);

var readBtton = document.getElementById("ShowFileButton");

readBtton.addEventListener("click", ShowFile, false);

}

});

//创建FilePicker类的对象

var filePicker = new FilePickerComponent.FilePicker();

//打开文件

function ReadFile() {

filePicker.readFile();

}

//将文件内容显示到textarea

function ShowFile() {

var fileText = document.getElementById("FileText");

fileText.innerHTML = filePicker.fileContent;

}

})();

在上面的代码中,分别为"打开文件"按钮和"读取文件"按钮添加单击事件处理函数ReadFile和ShowFile。接着创建FilePicker类的对象filePicker,此类定义在名为"FilePickerComponent"的WinRT组件中。接下来定义ReadFile函数,并在此函数中调用filePicker对象的readFile函数读取文件。然后定义ShowFile函数,在这个函数中通过document对象的 getElementById函数得到名为"FileText"的textarea控件,并将filePicker对象的fileContent属性的值显示到这个textarea控件中。

添加了上述的代码以后,接下来在default.html文件的head元素中添加如下的代码,引用前面添加的script.js文件。

<script src="/js/script.js"></script>

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

图20-24 文件打开选取器

在文件打开选取器中选取一个名为"Text.txt"的文本文件,然后单击"读取文件"按钮,将文本文件中的内容显示到textarea控件中,如图20-25所示。

图20-25 JavaScript调用WinRT组件

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

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

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

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

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

  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. Springboot:没有src/main/resources目录(引入图片时(或静态资源时)发现没有该目录)

    今天想在Springboot项目想引进静态资源时,发现自己的项目里没有教程里面的 src/main/resources这个目录,目录如下 我的项目目录结构是这样的,但是还不是很清楚下面的那个src目录 ...

  2. 《剑指offer》第四十四题(数字序列中某一位的数字)

    // 面试题44:数字序列中某一位的数字 // 题目:数字以0123456789101112131415…的格式序列化到一个字符序列中.在这 // 个序列中,第5位(从0开始计数)是5,第13位是1, ...

  3. MySQL学习(十五)

    索引的概念 索引是数据的目录,能快速定位数据的位置.索引提高了查询速度,降低了增删改的速度.并非加的越多越好. 一般在查询频率高的列上加,而且在重复度低的列上加效果更好.如在性别列上不用加索引,但是身 ...

  4. ubuntu18重装后 基本需求安装

    以下为本人重装ubuntu18后的基本需求安装过程 1 apt-fast sudo add-apt-repository ppa:apt-fast/stable sudo apt-get update ...

  5. Spring Boot入门第四天:使用Thymeleaf模板引擎

    原文链接 关于Thymeleaf的优点,我只说一条:它就是html页面啊,直接可以用浏览器打开.受够了JSP的同学可以尝试一下. 1.在pom.xml文件中添加依赖: <!--<depen ...

  6. JavaScript 第九章总结

    Handing events 前言 这一章节主要讲了关于 events 的内容,讲了 event 的定义,以及如何用 code 来 react to events.同时,也说明了 JavaScript ...

  7. ado.net常用操作

    目录 一.ADO.NET概要 二.ADO.NET的组成 三.Connection连接对象 3.1.连接字符串 3.1.1.SQL Server连接字符串 3.1.2.Access连接字符串 3.1.3 ...

  8. 新C# 操作Excel属性

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

  9. Zabbix安装(debian,centos)

    lnmp和lamp架构搭建一键安装脚本下载地址:https://lnmp.org/download.html  https://github.com/teddysun/lamp/tree/master ...

  10. Sonya and Matrix CodeForces - 1004D (数学,构造)

    http://codeforces.com/contest/1004/problem/D 题意:网格图给定到中心点的曼哈顿距离数组, 求该图n,m及中心点位置 首先可以观察到距离最大值mx一定在某个角 ...