【windows8开发】Windows Runtime组件封装及与javascript的交互
/******************************************
开始本文之前,借块地方说明下,本文之前的所有win8系列的文章是在windows 8 consumer preview(消费者预览版)的上进行的一些尝试和分享,本文开始会切换到windows 8 release preview(发行者预览版),因为从老版本到现在的版本间,framework中一些API有所改变,所以有些示例代码并不兼容,特此说明下。
******************************************/
windows 8通过windows runtime framework支持不同语言间的交互,比如在《【windows8开发】C++开发WinRT组件和JS调用》一文里曾经介绍过javascript如何去调用C++组件,而在本文中会更关注于怎么去封装支持多语言交互的组件,组件方使用C++来描述,调用方则使用javascript,因为实例代码中会有很多关于C++ /CX的特性,所以还不了解C++ /CX的可以先阅读下这篇文章:
《【windows8开发】深入浅出C++/CX》
希望大家带着如下问题去阅读这篇文章。Metro App中,要支持多语言调用,必须封装成windows runtime的组件dll,所谓windows runtime组件就是要基于windows runtime定义好的形式去封装组件API,而这些定义好的形式其实大部分都属于C++ /CX的特性,换句话说就是用C++ /CX的一些C++扩展特性来封装windows runtime组件。
var eventHandler1 = function (evt) { ......};var eventHandler2 = function (evt) { ......};nativeObject.addEventListener("changedevent", eventHandler1);nativeObject.addEventListener("changedevent", eventHandler2);nativeObject.fireEvent();这里eventHandler1和eventHandler2都会被触发。注意,事件名里的大写字母在用addEventListener绑定是都应该用小写,比如在C++里事件为changedEvent,js绑定时则应该是"changedevent"。