锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鐞嗚ВWindows 8搴旂敤妗嗘灦
姝e鍓嶆枃鎵璇達紝W(xué)indows 8鍏鋒湁涓や釜涓嶅悓椋庢牸鐨勫簲鐢紝W(xué)indows store搴旂敤鍜屼紶緇焀indows妗岄潰搴旂敤銆備袱縐嶉鏍煎簲鐢ㄤ嬌鐢ㄤ笉鍚岀殑UI寮曟搸錛屼笉鍚岀殑鏈嶅姟鍜屽伐鍏鳳紝浠ュ強涓嶅悓鐨凙PI. 浣嗘槸錛岄兘榪愯鍦ㄥ悓涓涓猈indows 8鎿嶄綔緋葷粺鍐呮牳涓嬨?/p>

鎴戜滑綆鍗曞姣斾竴涓嬩袱縐嶅簲鐢細
|
Windows store搴?/span>鐢?/span> |
浼犵粺Windows妗岄潰搴旂敤 |
|
Windows store搴?/span>鐢?/span>澧炲姞瑙︽帶鎿嶄綔錛岀嫭鐗圭殑鎵嬪娍鎿嶄綔錛屾彁楂樼敤鎴蜂綋楠屾?/span> |
浼犵粺妗岄潰搴?/span>鐢ㄤ富瑕佹搷浣滄ā寮忔槸鍩轟簬榧?/span>鏍?/span>鍜?/span>閿洏鎿嶄綔搴?/span>鐢?/span> |
|
搴?/span>鐢ㄥ紑鍙?/span>鍩轟簬.Net Framework Windows 8 API |
搴?/span>鐢ㄥ紑鍙?/span>鍩轟簬Win32 API,鎴栬?/span>Net Framework |
|
Windows store搴?/span>鐢ㄤ笉鎺ㄨ崘澶ч噺浣跨敤瀵硅瘽妗?/span>榪?/span>琛屼漢鏈轟氦浜掞紝鑰屾帹鑽愪嬌鐢?/span>欏?/span>闈?/span>瀵艱埅鐨勬ā寮忚繘琛屼氦浜掞紝榪欑鏂瑰紡鏇磋薄浣跨敤嫻忚鍣ㄥ墠榪涘悗閫鐨勫姛鑳借繘琛屼氦浜掋?/span> |
浼犵粺搴?/span>鐢ㄤ互瀵硅瘽妗?/span>涓?/span>涓昏浜烘満浜や簰鏂瑰紡 |
|
鍦ㄩ儴緗叉柟闈紝鐢?/span>鎴?/span>涓嶉渶瑕佷簡瑙?/span>搴?/span>鐢ㄥ畨瑁呮枃浠剁瓑淇℃伅錛?/span>浠?/span>闇瑕佸湪Windows store涓嬭澆瀹夎鍗沖彲銆?/span> |
鍦ㄩ儴緗叉柟闈紝浼犵粺妗岄潰搴?/span>鐢ㄩ渶瑕佷竴瀹氱殑瀹夎鍜屾敞鍐屾祦紼?/span> |
Windows 8浼犵粺妗岄潰搴旂敤妗嗘灦
Windows 8浼犵粺妗岄潰搴旂敤鍙互鏍規(guī)嵁鍒嗕負涓夌被錛屽垎鍒槸Win32搴旂敤錛?Net搴旂敤鍜孒TML搴旂敤銆?/p>
1. Win32搴旂敤涓昏寮鍙戣璦涓篊錛孋++鎴朧B銆傝搴旂敤琚洿鎺ョ紪璇戜負CPU浠g爜榪愯鍦╓in32 API涓婏紝鍏剁敤鎴風(fēng)晫闈㈠疄鐜板繀欏諱嬌鐢℅DI鎴栬匞DI+銆?/p>
2. .Net搴旂敤涓昏寮鍙戣璦涓篊#錛孷B.NET銆傝搴旂敤琚紪璇戜負涓棿璇█(IL)錛岀劧鍚庡啀琚漿鎹負CPU浠g爜榪愯鍦–LR(Common Language Runtime)鐜銆傚叾鐢ㄦ埛鐣岄潰瀹炵幇浣跨敤XAML璇█銆?/p>
3. HTML搴旂敤涓昏寮鍙戣璦涓篐TML/CSS鍜孞avaScript錛岃搴旂敤鍩轟簬嫻忚鍣ㄨ繍琛屻?/p>



瀛︿範(fàn)XAML鎻忚堪璇█錛岃鐪嬶細Windows 8 XAML瀹炰緥鏁欑▼緋誨垪
String綾誨瀷鐨勬瀯閫?/strong>
String綾誨瀷琛ㄧず鐨勬槸char16鐨勫瓧絎︿覆錛屽彲浠ョ洿鎺ラ氳繃瀛楃涓茬殑璧嬪兼潵榪涜鏋勯犱篃鍙互浣跨敤鏍囧噯C++鐨剋char_t*鎸囬拡榪涜鏋勯犮?/p>
// Initializing a String^ by using string literals
String^ str1 = "Test"; // ok for ANSI text. uses current code page
String^ str2("Test");
String^ str3 = L"Test";
String^ str4(L"Test");

//Initialize a String^ by using another String^
String^ str6(str1);
auto str7 = str2;
// Initialize a String from wchar_t* and wstring
wchar_t msg[] = L"Test";
String^ str8 = ref new String(msg);
std::wstring wstr1(L"Test");
String^ str9 = ref new String(wstr1.c_str());
String^ str10 = ref new String(wstr1.c_str(), wstr1.length());
瀛楃鐨勬搷浣?/strong>
String鎻愪緵浜嗙浉鍏崇殑鏂規(guī)硶鏉ユ搷浣滃瓧絎︿覆錛屽叾涓彲浠ヤ嬌鐢⊿tring::Data()鏂規(guī)硶鏉ヨ繑鍥炰竴涓猄tring^ 瀵硅薄鐨剋char_t*鎸囬拡銆?/p>
// Concatenation
auto str1 = "Hello" + " World";
auto str2 = str1 + " from C++/CX!";
auto str3 = String::Concat(str2, " and the String class");
// Comparison
if (str1 == str2) { /*
*/ }
if (str1->Equals(str2)) { /*
*/ }
if (str1 != str2) { /*
*/ }
if (str1 < str2 || str1 > str2) { /*
*/};
int result = String::CompareOrdinal(str1, str2);
if(str1 == nullptr) { /*
*/};
if(str1->IsEmpty()) { /*
*/};
// Accessing individual characters in a String^
auto it = str1->Begin();
char16 ch = it[0];
String綾誨瀷鐨勮漿鎹?/strong>
String綾誨瀷鍙互鍜屾爣鍑咰++鐨剋string榪涜浜掔浉鐨勮漿鎹?/p>
// compile with: /ZW
#include <string>
using namespace std;
using namespace Platform;
int main( array<String^>^ args )
{
// Create a String^ variable statically or dynamically from a 
literal string.
String^ str1 = "AAAAAAAA";
// Use the value of str1 to create the ws1 wstring variable.
wstring ws1( str1->Data() );
// The value of ws1 is L"AAAAAAAA".
// Manipulate the wstring value.
wstring replacement( L"BBB" );
ws1 = ws1.replace ( 1, 3, replacement );
// The value of ws1 is L"ABBBAAAA".
// Assign the modified wstring back to str1.
str1 = ref new String( ws1.c_str() ); 
return 0;
}
Windows榪愯鏃剁粍浠舵槸Windows 8閲岄潰閫氱敤鐨勫叕鍏卞簱錛屽畠鍙互浣跨敤C++錛孋#鎴栬匳B鏉ョ紪鍐欙紝涓嶈繃浣犵殑Windows 8 metro鏄敤浠涔堣璦緙栧啓閮藉彲浠ヨ皟鐢ㄦ棤緙濆湴璋冪敤Windows榪愯鏃剁粍浠躲?/p>
涓嬮潰閫氳繃涓涓狢#緙栧啓鐨刉indows 8欏圭洰鏉ヨ皟鐢ㄤ竴涓敤C++緙栧啓鐨刉indows榪愯鏃剁粍浠躲?/p>
鍒涘緩涓涓猈indows榪愯鏃剁粍浠訛細

緙栧啓濡備笅鐨勪唬鐮侊細
#include "pch.h"
#include "WinRTComponent.h"
using namespace CppWinRTComponentDll2;
int CalculatorSample::Add(int x, int y)
{
return x+y;
}
澶存枃浠?/p>
#pragma once
using namespace Windows::Foundation;
namespace CppWinRTComponentDll2
{
public ref class CalculatorSample sealed
{
public:
int Add(int x, int y);
};
}
鍦–#緙栧啓鐨勯」鐩腑璋冪敤Windows榪愯鏃剁粍浠剁殑C++鏂規(guī)硶
娣誨姞Windows榪愯鏃剁粍浠?/p>

UI閮ㄥ垎
<Page
x:Class="TestWinRTCSDemo.MainPage"
IsTabStop="false"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TestWinRTCSDemo"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<StackPanel>
<TextBox x:Name="txtX" HorizontalAlignment="Center" Height="45" Width="258"></TextBox>
<TextBlock Text="+" HorizontalAlignment="Center" Height="45" Width="258" FontSize="14" FontWeight="Bold"/>
<TextBox x:Name="txtY" HorizontalAlignment="Center" Height="45" Width="258"></TextBox>
<Button Content="璋冪敤WinRT鏂規(guī)硶鏉ョ浉鍔? HorizontalAlignment="Center" Click="Button_Click_1" ></Button>
<TextBox x:Name="txtAddResult" HorizontalAlignment="Center" Height="45" Width="258"/>
</StackPanel>
</Grid>
</Page>
C#浠g爜閮ㄥ垎
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using CppWinRTComponentDll2;//寮曞叆Windows榪愯鏃剁殑絀洪棿
namespace TestWinRTCSDemo
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
if (txtX.Text != "" && txtY.Text != "")
{
CalculatorSample calcobj = new CalculatorSample();//鐩存帴鍒涘緩Windows榪愯鏃墮噷闈㈢殑瀵硅薄錛屽緢鏂逛究
int x = Convert.ToInt32(txtX.Text.ToString());
int y = Convert.ToInt32(txtY.Text.ToString());
txtAddResult.Text = calcobj.Add(x,y).ToString();//璋冪敤Windows榪愯鏃墮噷闈㈢殑鏂規(guī)硶
}
}
}
}
榪愯鐨勬晥鏋?/p>

鍩虹鐭ヨ瘑
寰蔣浠ユ帹鍑篧indows 8涓哄鏈猴紝浠ヨВ鍐砏indows闀挎湡瀛樺湪鐨勯棶棰橈紝騫跺甫鏉ヤ簡鏂扮殑鐢ㄦ埛鐣岄潰錛屼嬌寰梂indows鏇村姞瀹夊叏鍜孉ppStore鐨勫晢涓氭ā寮忋傚井杞湪Windows 8 閲屾墦閫犱簡絎笁涓?XAML-based UI 緋葷粺錛?WPF鍙槸涓涓緵 .NET 榪欎釜鍦堝瓙浣跨敤鐨刋AML UI緋葷粺 Silverlight鍙槸緇欐祻瑙堝櫒浣跨敤鐨刋AML UI緋葷粺錛學(xué)indows Phone7灝哠ilverlight鍒頒簡鎵嬫満錛岀幇鍦ㄥ皢XAML甯﹀埌浜嗘兜鐩朠C銆丳ad銆丳hone鐨勬墍鏈夌郴緇燂紙铏界劧寰蔣璁や負騫蟲澘涔熸槸PC錛屾垜榪樻槸鎯沖彨浠朠ad錛岀敤榪噄Pad鐨勯兘鐭ラ亾鑻規(guī)灉鎵瀹氫箟鐨凱ad鍜孭C鏈夊緢澶у尯鍒級銆?/p>
.NET寮鍙戜漢鍛橀兘瀵?NET 鐨凱 / Invoke鍜孋OM Interop 寰堢啛鎮(zhèn)変簡錛岃繖涓ょ鎶鏈嬌寰?NET浜哄憳鍙互浣跨敤Win32 API鍜孋OM緇勪歡錛孧ono涔熸槸浣跨敤P/Invoke鎶鏈垱寤哄師鐢熺殑搴擄紝渚嬪Gtk# 緇戝畾鍒?Gtk+ API, MonoMac 緇戝畾鍒癈ocoa API, Qyoto 緇戝畾鍒癚t API錛孧ono鍑虹幇浜哅onoTouch錛孧onoDroid鍜孧onoMac絳夌瓑寰堟湁鍒涙柊鎬х殑浜у搧銆?COM Interop 榪樺彲浠ヤ嬌寰桟/C++ 浠?C#瀵煎叆Com綾誨瀷搴撱?/p>
鍒涘緩鍘熺敓搴撶殑鏂規(guī)硶寰堝錛屼絾鏄繖浜涘伐浣滈兘寰楁槸鎵嬪伐鍘誨仛錛屽緢涔忓懗鑰屼笖瀹規(guī)槗鍑洪敊錛屼粠榪欑偣鏉ヨWinRT涔熸槸涓涓緢鏈夊垱鏂扮殑錛屽彲浠ヨ鎵鏈夌殑寮鍙戣呯敤鍚屼竴涓ā鍨嬪垱寤篗etro UI鐨勫簲鐢ㄣ?/p>
WinRT
WinRT鏄竴涓柊鐨凙PI 闆嗗悎錛屽叿鏈変互涓嬬壒鎬э細
WinRT鍖呰鐨勬柊鐨勭敤鎴風(fēng)晫闈㈢郴緇燂紝鍜學(xué)in32API涓鏍鋒槸Com鐨勪笂灞傘?/p>
WinRT Projections
鎴戜滑鎵璇寸殑“Binding”錛屽井杞幇鍦ㄥ彨鍋?#8220;Projections”錛屽張鏄竴涓柊鍚嶈瘝銆侾rojections灝辨槸鍚戜笁涓幆澧?Native (C and C++), HTML/Javascript 鍜?NET 鏆撮湶鎺ュ彛鐨勮繃紼嬨傛墍浠ュ湪Win8涓婂悇綾誨紑鍙戣呬緷鐒跺彲浠ョ敤鐫涓嶅悓鐨勫伐鍏鳳紝浣嗘槸鍗存槸浣跨敤鐫緇熶竴鐨勬ā鍨嬨?/p>
濡傛灉寮鍙戣呬嬌鐢?NET鎴栬匔++ 鍐欑殑緇勪歡錛屽畠鐨凙PI琚瓨鍌ㄥ湪涓涓猈inMD鏂囦歡閲岋紝浣犲彲浠ュ湪涓夌鐜錛堝師鐢熴乯avascript鍜?NET錛夈傚嵆浣夸綘鐨勭粍浠舵槸鐢–++ 鍐欑殑錛屼篃涓嶉渶瑕侀氳繃COM鍚戝鏆撮湶錛屼嬌鐢ㄨ搗鏉ユ洿鍍忔槸涓涓潰鍚戝璞$殑C++ API銆?/p>
WinRT鐨勫簳灞傚畾涔変簡涓濂楀熀鏈殑綾誨瀷鍜屽悇縐嶇幆澧冪殑鏄犲皠錛岃繖鏄笉鏄緢鍍?NET鐜閲岄潰瀵逛笉鍚岃璦鐨勬敮鎸佸搱銆?/p>
寮傛API
寰蔣璁や負錛屽綋緇欏紑鍙戣呬竴涓嬌鐢ㄥ悓姝ュ拰寮傛鐨凙PI鐨勯夋嫨鐨勬椂鍊欙紝寮鍙戣呬細閫夋嫨綆鍗曠殑鍚屾API錛岃繖鍦ㄦ垜浠殑.NET 緙栫▼瀹炶返涓緱鍒拌瘉鏄庯紝.NET鏈夊緢鎴愮啛鐨勫紓姝ョ紪紼嬫ā鍨嬶紝榪樻湁鐗規(guī)剰涓哄茍琛屽拰寮傛澶勭悊鑰岃璁$殑F#錛岀粨鏋滄槸浠涔堝憿錛屽悇浣嶅悓瀛﹀績閲屾湁鏁般?/p>
鍦╓inRT涓紝寰蔣涓鐩撮伒寰竴涓畝鍗曠殑瑙勫垯錛氬鏋滀竴涓狝PI棰勮鑰楁椂瓚呰繃50姣錛岄偅涔圓PI灝辨槸寮傛鐨勶紝涔熷氨鏄API鏄紓姝ョ殑鍝︼紝榪欐牱灝辮兘紜繚Metro UI涓婄殑鎿嶄綔浣撻獙鏄渶濂界殑銆?/p>
寮傛緙栫▼鍘嗘潵鏄竴涓箒鐞愮殑榪囩▼錛屽洖璋冨拰鐘舵侊紝榪樻湁寮傚父澶勭悊絳夈備負浜嗙畝鍖栬繖涓繃紼嬶紝C#鍜孷B涔熸墿灞曚簡鏀寔 F#-inspired await/async 妯″瀷錛屽紓姝ョ紪紼嬪彉鎴愪簡嬈箰涔嬫梾銆?/p>
.NET鐨勯瑕佸湴浣嶄笉瑙佷簡鍚楋紵
涔嬪墠鐨勬柊闂諱腑涓鐩村湪璐ㄧ枒.NET 琚井杞姏寮冧簡錛屽綋鐒朵笉鏄簡銆備篃涓嶆槸鎵鏈夌殑.NET API 閮介泦鎴愬埌浜哤inRT涓紝鍙槸涓涓瓙闆嗐?/p>
褰撲綘浣跨敤C#鍜孷B錛屼綘浣跨敤鐨勬槸瀹屾暣鐨?NET妗嗘灦銆備絾鏄粬浠彧鏆撮湶浜嗕竴涓緝?yōu)畯鐨勫瓙闆咥PI緇橶indows 8鐨勫紑鍙戣呫備綘鍙兘浼氭兂錛屾垜鍙互閫氳繃涓浜涙妧宸т嬌鐢ㄥ埌鏁翠釜.NET錛屽鏋滀綘鐨勭▼搴忎笉闇瑕佹彁浜ppStore涓婃帴鍙楀井杞殑瀹℃牳錛岃繖鏄彲浠ョ殑銆傝繖縐嶇瓥鐣ユ槑鏄炬槸璺熻嫻鏋滃鐨勩?/p>
鍊熸鏈轟細.NET鍥㈤槦涔熷.NET鍋氫簡涓嬈℃竻鐞嗭紝mscorlib.dll鍜孲ystem.dll涓凡琚垎鍓插湪涓嶅悓鐨勫簱閲屽ご浜嗭紝闅忕潃Win8鍙戝竷鐨?NET鐗堟湰鏄?.5浜嗭紝涔熷氨鏄.NET 4.5涓嶆槸.NET 4鐨勭畝鍗曡ˉ涓佸寘錛岄噷澶村姞浜嗕笉灝戜笢瑗匡紝ASP.NET鐨勭増鏈彿涔熸槸4.5錛屼笉鍍?NET 2.0 ~3.5 SP1錛孉SP.net鐨勭増鏈繕鏄?銆?銆備負浜嗗湪Win8閲屽紑鍙戯紝寮濮嬪涔?NET 4.5鍙堟槸蹇呴』鐨勪簡錛岃繖閲屽叧娉ㄧ殑闆嗕腑鍦ㄥ鎴風(fēng)寮鍙戯紝鍚屾牱鐨勫湪鏈嶅姟鍣ㄧ寮鍙戞柟闈?NET 4.5涔熷姞鍏ュぇ閲忕殑騫茶揣銆?/p>
鍒涘緩WinRT 緇勪歡
铏界劧WinRT鏀寔寰堝鐨勮璦錛屼絾鏄井杞彧鏄敤C++鍜?NET婕旂ず浜嗗浣曞紑鍙戜竴涓猈inRT緇勪歡錛屼嬌鐢?NET鏉ュ紑鍙慦inRT緇勪歡浼氭瘮C++綆鍗曞緱澶氥備篃涓嶆槸鎵鏈夌殑.NET鐗規(guī)ч兘鑳界敤涓婂摝錛屾瘮濡傜粍浠剁被灝變笉鑳戒嬌鐢╬rivate 瀛楁錛屽湪寮傛鐨凙PI閲屼笉鑳戒嬌鐢═ask<T> 錛岃鐢↖AsyncOperation 浠f浛銆?/p>
public sealed class AddTwo
{
public int Add (int a, int b)
{
return a + b;
}
public async IAsyncOperation SubAsync (int a, int b)
{
return a - await (CountEveryBitByHand (b));
}
}
浣犱細鍙戠幇涓婅堪浠g爜娌℃湁浠諱綍褰㈠紡鐨凜OM澹版槑錛屽敮涓闄愬埗鐨勬槸錛岀被蹇呴』鏄釜瀵嗗皝鐨勶紙闄ら潪浣犳槸鍦ㄥ垱寤轟竴涓猉AML UI緇勪歡錛岃繖縐嶆儏褰笅榪欑闄愬埗鏄帴瑙︾殑錛?/p>
UI緙栫▼
褰撴秹鍙婂埌鐢ㄦ埛鐣岄潰鐨勫紑鍙戠殑鏃跺欙紝浣犱綘鍙互浣跨敤HTML涓嶤SS鏍峰紡鎴栦嬌鐢╔AML鐨勪綘鐨勫簲鐢ㄧ▼搴忕殑鐢ㄦ埛鐣岄潰銆傚綋浣犲洖鍒扮晫闈㈠眰錛屽氨鍙互鐢℉TML & CSS鎴栬呮槸XAML UI錛岀敤HTML& Css鍋氬嚭鏉ョ殑鐣岄潰灝辨槸Web浜嗭紝鑰屾槸涓涓猈indows搴旂敤錛屾棭鍦╒ista寮濮嬪氨鏈変簡綾諱技鐨勫簲鐢紝W(xué)indows7涓婂仛浜嗘敼榪涳紝鍙仛Gadgets 錛學(xué)indows 8灝辮繘鍖栧埌浜哅etero UI錛屽拰C++銆?NET騫墮┚榻愰┍浜嗐?/p>
Windows8鐨勫紑鍙戞鏋跺茍娌℃湁鍩轟簬HTML5鍜孞avaScript錛屽紑鍙戣呭畬鍏ㄥ彲浠ョ敤鍘熺敓C++銆丆#鍜孲ilverlight鍘誨紑鍙戝騫蟲澘鍜岃Е鎺у弸濂界殑搴旂敤錛孒TML5鍜孞avaScript鍙槸鎻愪緵浜嗕竴縐嶉夋嫨銆?/p>
銆銆錛堜綔鑰咃細Jonathan Allen 璇戣咃細渚集钖?/a>錛?/p>
銆銆灝界鎴戜滑鍙互浣跨敤 .NET 璇█鏉ヨ皟鐢?Win32 API錛屼絾閭f牱鍋氫細寰堝洶闅俱傛墍浠ュ湪榪囧幓鐨勪袱騫撮棿寰蔣涓鐩村湪鏋勫緩鏇夸唬鐨勬柟妗堬紝瀹冨氨鏄疄鐜頒簡璺ㄨ璦鏀寔鐨?Windows 榪愯鏃訛紝鍗?WinRT銆傛垜浠彲浠ュ湪 C++ 鍜?.NET 涓垱寤?WinRT 緇勪歡錛屽茍涓斿彲鐢變簩鑰呬互鍙?JavaScript 浣跨敤銆?/p>
銆銆灝界 COM 鍦ㄨ〃闈笂鏄竴縐嶅熀浜?OOP 鐨勬鏋訛紝浣嗗畠涓?.NET 涔嬮棿鏈夊緢澶х殑鍖哄埆銆傚湪 WinRT 鍑虹幇涔嬪墠錛孋OM 鏄熀浜庢帴鍙h屼笉鏄熀浜庣被鐨勩傝繖鎰忓懗鐫鍏朵腑緙哄皯寰堝 .NET 寮鍙戣呰涓哄簲璇ユ湁鐨勫唴瀹癸紝鍍忔瀯閫犲嚱鏁頒互鍙婇潤鎬佹柟娉曠瓑銆?a >C++緇勪歡鎵╁睍
銆銆WinRT 褰㈠紡鐨?COM 浣跨敤鐨勫厓鏁版嵁鏍煎紡鍜岄氱敤璇█榪愯鏃訛紙Common Language Runtime錛夌浉鍚屻傝繖浜涗俊鎭瓨鍌ㄥ湪琛ㄧず緇撴瀯鐨?WINMD 鏂囦歡涓紝灝界娌℃湁瀹炵幇錛屼絾鍦ㄦ墍鏈夊叕鏈夌被涓兘浼氭湁銆侳XCop 琚敤浜庢楠岃繖浜涙枃浠舵墍鏆撮湶鐨?API 鏄惁閬靛驚 .NET Framework 鐨勮璁℃寚鍗椼?/p>
銆銆.NET 鍦ㄦ渶寮濮嬫椂灝辨湁“API 璁捐濮斿憳浼氾紙API Design Board錛?#8221;銆傚彈姝ゅ惎鍙戯紝W(xué)indows 榪愯鏃朵篃浼氬緩绔?API 璁捐濮斿憳浼氭潵瀵瑰叾榪涜綆$悊銆傚緢澶氭渶鍒濈殑鎴愬憳閮藉湪 .NET 濮斿憳浼氫腑錛屽茍涓斿緢澶氭寚鍗楅兘鐩存帴鏉ヨ嚜浜?.NET 鍩烘湰綾誨簱鎵閬靛驚鐨勫師鍒欍?/p>
銆銆Windows 榪愯鏃朵細榪斿洖 HRESULT錛岃屼笉浼氭姏鍑哄紓甯搞傚浜庝紬鎵鍛ㄧ煡鐨?HRESULT 鍊兼潵璇達紝浼氭姏鍑虹浉搴旂殑寮傚父錛岃屽浜庡叾浠栧煎氨鍙兘鎶涘嚭 COMException銆?/p>
銆銆WinRT 鐨?IAsyncOperation 鎺ュ彛鐜板湪浣跨敤鏂扮殑 async/await 鍏抽敭瀛楋紝灝卞儚 .NET 鐨?Task 瀵硅薄涓鏍楓?/p>
銆銆鎵鏈?Windows 榪愯鏃剁殑闆嗗悎鎺ュ彛閮借鏄犲皠鍒?.NET 妗嗘灦鐨勭瓑浠風(fēng)墿涓娿傚湪 .NET 4.5涓坊鍔犱簡 IReadOnlyList 鍜?IReadOnlyDictionary錛岀敤鏉ヨ礋璐e鐞?WinRT 涓殑鍙闆嗗悎銆?/p>
銆銆WinRT 鍜?.NET API 鍦ㄤ袱涓湴鏂規(guī)棤娉曞尮閰嶃俉inRT 鐨?stream 鏃犳硶鐩存帴涓?.NET 鐨?IO.Stream 綾誨吋瀹癸紝浣嗘槸鍙互璋冪敤鍚嶄負 AsStream 鐨勬墿灞曟柟娉曟潵榪涜杞崲銆俉inRT 榪樻嫢鏈夊悕涓?IBuffer 鐨勬帴鍙o紝榪欏湪 .NET 涓篃鏃犳硶綆鍗曞湴瀹炵幇銆傚湪姝や篃鏈変竴涓墿灞曟柟娉曟潵榪涜 IBuffer 鍜屾瘮鐗規(guī)暟緇勪箣闂寸殑杞崲銆?/p>
銆銆鎴戜滑鍙互浣跨敤 C# 鍜?VB 鏉ュ垱寤烘柊鐨?Windows 榪愯鏃剁▼搴忓簱錛岃繃紼嬮潪甯哥畝鍗曘備負浜嗘妸綾繪毚闇蹭負 Windows 榪愯鏃剁粍浠訛紝鎴戜滑鍙渶瑕佹妸欏圭洰綾誨瀷璁劇疆涓?#8220;WINMD 鏂囦歡”錛屽茍紜繚閬靛驚浠ヤ笅瑙勫垯錛?/p>
銆銆緙栬瘧榪欎簺搴撲箣鍚庯紝鎴戜滑灝卞彲浠ュ湪 C++ 鍜?JavaScript 涓皟鐢ㄥ畠浠紝灝卞儚浠?.NET 涓皟鐢ㄤ竴鏍風(fēng)畝鍗曘?/p>
銆銆璀﹀憡
銆銆鐢變簬 WinRT 鏄熀浜?COM 鏋勫緩鐨勶紝鎵浠ヤ綘鍚屾牱浼氭湁寮曠敤璁℃暟鍜?mark-and-sweep 鍨冨溇鍥炴敹鍣ㄤ箣闂存棤娉曡瀺鍚堢殑闂銆傚浜庡疄鐜頒簡鏋愭瀯鍑芥暟閲婃斁闈炲唴瀛樿祫婧愮殑瀵硅薄鏉ヨ錛岃繖鏄渶甯歌鐨勯棶棰樸傛垜浠彲浠ヨ冭檻璋冪敤“Marshal.FinalReleaseComObject”鏉ヨВ鍐抽棶棰橈紝浣嗘槸閭f湰韜篃瀛樺湪闂銆?/p>
銆銆COM 椋庢牸鐨?marshaling 闇瑕佸湪 .NET 鍜屾湰鍦扮粍浠朵箣闂磋皟鐢ㄣ傚敖綆¤繖閫氬父鏄棤鍏崇揣瑕佺殑錛屼絾鏄鏋?API 闈炲父涓嶆寮忥紝閭d箞灝變細鍑虹幇闂銆?/p>
銆銆鍐呭緩鐨?WinRT 搴擄紙鑰屼笉鏄?XAML錛夋槸鍦?Metro 榪愯鏃剁幆澧冧箣澶栨彁渚涚殑銆傜劧鑰岋紝絎笁鏂圭殑 WinRT 搴撳茍闈炲姝ゃ傝繖鏄?WinRT 涓縺媧繪鏋訛紙activation framework錛夌殑闄愬埗錛岃屼笉鏄?.NET 鐨勯棶棰樸?/p>
瀵逛簬 Windows 8錛屾垜浠交搴曢瑕嗘敼閫犱簡騫沖彴錛屾?zhèn)ㄥ彲浠ラ夋嫨鎮(zhèn)ㄥ凡浜嗚В鐨勭紪紼嬭璦鍜屾妧鏈潵鏋勫緩涓鴻澶囧拰澶栧艦鍥犵礌瀹氬埗鐨勫簲鐢ㄣ傝屽浜?Windows 榪愯鏃訛紝鎮(zhèn)ㄧ敋鑷沖彲浠ュ湪鍗曚竴搴旂敤涓交鏉懼湴浣跨敤澶氱璇█銆傞氳繃浣跨敤 C++ 鏉ユ瀯寤烘?zhèn)ㄨ嚜鏈夌?Windows 榪愯鏃剁粍浠訛紝鎮(zhèn)ㄥ彲浠ラ氳繃鍙笌 Xbox 360 鎺у埗鍣ㄤ氦浜掔殑 HTML 鍜?JavaScript 鏉ユ瀯寤哄嚭鑹茬殑 Metro 椋庢牸搴旂敤銆傛?zhèn)ㄥ彲浠ユ瀯寰忛氳繃 Windows 榪愯鏃剁粍浠跺叕寮鐨勫彲閲嶇敤 XAML 鎺т歡錛岃繖浜涙帶浠跺彲渚涗嬌鐢?C++ 鍜?C# 緙栧啓鐨?Metro 椋庢牸搴旂敤鍗蟲椂浣跨敤銆傚疄璐ㄤ笂錛屾垜浠凡鍏佽鎮(zhèn)ㄥ湪 Windows 8 騫沖彴涓婁嬌鐢ㄦ?zhèn)ㄩ夋嫨鐨勮璦騫朵互姣笉榪佸氨鐨勬柟寮忔潵鏋勫緩搴旂敤銆?/p>
鍦ㄦ湰綃囧崥鏂囦腑錛屾垜浠皢璁ㄨ鏋勫緩 Windows 榪愯鏃剁粍浠舵墍闇浜嗚В鐨勫繀瑕佺煡璇嗐?/p>
鍩虹鐭ヨ瘑
Windows 榪愯鏃舵槸瀹炵幇璇█閫夋嫨鐨勬牳蹇冦傚畠鑷韓鏄叕寮鐨勶紝浠庤屾?zhèn)ㄥ彲浠ヤ?JavaScript銆丆++銆丆# 鍜?Visual Basic 涓互鑷劧鑰岀啛鎮(zhèn)夌殑鏂瑰紡瀵瑰叾榪涜璋冪敤銆傝繖縐嶅熀紜鏂規(guī)硶涔熷悓鏍烽傜敤浜庢瀯寤烘?zhèn)ㄨ嚜鏈夌?API銆?/p>
鎮(zhèn)ㄥ湪搴旂敤涓瀯寤哄拰鎵撳寘鐨?Windows 榪愯鏃剁粍浠墮氬父琚О浣滅涓夋柟 Windows 榪愯鏃剁粍浠躲傝繖涓庡凡浣滀負 Windows 8 騫沖彴涓竴閮ㄥ垎鐨勭涓鏂圭粍浠舵湁鎵涓嶅悓銆傛?zhèn)ㄥ彲浠ヤ娇鐢?C++銆丆# 鎴?Visual Basic 緙栧啓榪欎簺絎笁鏂?Windows 榪愯鏃剁粍浠躲傛?zhèn)ㄥ彲浠ヤ粠鋼Q浣曚綅緗皟鍏ュ畠浠叕寮鐨?API錛屽寘鎷墦鍖呭埌鎮(zhèn)ㄧ殑搴旂敤涓殑鍏朵粬 Windows 榪愯鏃剁粍浠躲傛?zhèn)ㄤ篃鍙互鋴社敤鋼Q浣曡璦鏉ヨ皟鍏ラ氳繃 Windows 榪愯鏃剁粍浠跺叕寮鐨?API銆?/p>
鎮(zhèn)ㄤ負搴旂敤緙栧啓鐨?Windows 榪愯鏃剁粍浠跺彲浣跨敤 Windows 榪愯鏃?API銆乄in32銆丆OM銆?NET API 鎴栫涓夋柟搴擄紙鍙瀹冧滑鏀寔 Metro 椋庢牸搴旂敤寮鍙戯級銆傝娉ㄦ剰鎮(zhèn)ㄦ墍鏋勫緩鐨?Windows 榪愯鏃剁粍浠朵笌浼犵粺鎰忎箟涓婂叕寮 API 鐨?C++ DLL 鎴?.NET 紼嬪簭闆嗗茍涓嶇浉鍚屻備嬌鐢?.Net 鍒涘緩綾誨簱鎴栬呬嬌鐢?C++ 鍒涘緩鐙珛鐨?DLL 涓庢瀯寤?Windows 榪愯鏃剁粍浠跺畬鍏ㄤ笉鍚屻俉indows 榪愯鏃剁粍浠跺湪鍏紑 Windows 榪愯鏃跺厓鏁版嵁鐨?.wnmd 鏂囦歡涓0鏄庯紝騫朵笖鍏佽 JavaScript 絳夎璦鏉ヨ嚜鐒跺湴浣跨敤 Windows 榪愯鏃?API錛堜緥濡傦紝鍚?JavaScript 鍏紑鐨?API 鐨?pascalCasedNames 鏀寔錛夈俉indows 榪愯鏃跺厓鏁版嵁榪樺厑璁?Visual Studio 鎻愪緵鍑鴻壊鐨勫伐鍏峰姛鑳斤紝濡?IntelliSense 鏀寔銆?/p>
涓轟綍瑕佹瀯寤烘?zhèn)ㄨ嚜鏈夌?Windows 榪愯鏃剁粍浠?/strong>
鍒涘緩 Windows 榪愯鏃剁粍浠跺彲甯姪鎮(zhèn)ㄥ鍙噸鐢ㄦу拰璇█浜掓搷浣滄ц繘琛岃璁°傛垜浠潵鐪嬩竴涓嬪睍紺哄浣曚嬌鐢ㄧ涓夋柟 Windows 榪愯鏃剁粍浠舵潵鏋勫緩鏇翠匠浣撻獙鐨勪竴浜涘簲鐢ㄧ▼搴忔柟妗堛?/p>
鍦ㄦ?zhèn)ㄧ?Metro 椋庢牸搴旂敤涓嬌鐢?Win32 鍜?COM API
Internet Explorer 10 鎻愪緵鐨勫鉤鍙板厑璁告?zhèn)ㄤ娇鐢?HTML銆丆SS 鍜?JavaScript 鍒涘緩鍑鴻壊鐨?Metro 椋庢牸搴旂敤浣撻獙銆備絾鏄紝濡傛灉鎮(zhèn)ㄥ凡浣跨敤 HTML5 Canvas 鏋勫緩娓告垙錛屽茍甯屾湜涓?Windows 鐨?Xbox 360 鎺у埗鍣ㄧ浉闆嗘垚錛岄偅鎯呭喌浼氭庢牱錛熷厑璁稿簲鐢ㄤ粠鎺у埗鍣ㄦ帴鏀惰緭鍏ョ殑 XInput API 浼氬皢涓嶅彲鐢ㄧ殑 Win32 API 鐩存帴鍚?JavaScript 鍏紑銆?/p>
榪欐槸閫氳繃鍒涘緩 Windows 榪愯鏃剁粍浠舵潵瑙e喅璇ラ棶棰樺茍浣挎?zhèn)ㄨ兘澶熷湪鍩轰?HTML 鐨?Metro 椋庢牸搴旂敤涓嬌鐢?XInput API 鐨勭粡鍏哥ず渚嬨俋Input 鍜?JavaScript 鎺у埗鍣ㄨ崏鍥劇ず渚嬪噯紜湴灞曠幇浜嗚繖涓鐐廣傝紺轟緥搴旂敤鍖呭惈涓涓父鎴忔帶鍒跺櫒 Windows 榪愯鏃剁粍浠訛紝瀹冧嬌鐢?C++ 緙栧啓騫剁敤浜庡寘瑁?XInput API 鍏紑鐨勫姛鑳姐傝鎺у埗鍣ㄨ崏鍥懼熀浜?HTML 鐨勫簲鐢ㄤ嬌鐢ㄦ父鎴忔帶鍒跺櫒 C++ Windows 榪愯鏃剁粍浠舵潵瀹炵幇涓?Xbox 360 鎺у埗鍣ㄧ殑浜や簰銆?/p>
榪欎竴鏂規(guī)錛堟棤娉曞崟鐙嬌鐢?HTML 鍜?JavaScript 瀹炵幇錛夋槸閫氳繃鍒涘緩絎笁鏂?Windows 榪愯鏃剁粍浠舵潵瀹屾垚閫氳繃鍏朵粬鏂規(guī)硶鏃犳硶瀹屾垚鐨勫鏉傛柟妗堢殑瀹岀編紺轟緥銆?/p>
澶ц綆楅噺鐨勬搷浣?/strong>
涓鴻濡傜瀛︺佸伐紼嬪拰鍦板浘/鍦扮悊絳夊瓧孌靛垱寤哄簲鐢ㄩ氬父闇瑕佸ぇ璁$畻閲忕殑鎿嶄綔銆傝繖浜涘ぇ閲忕殑鎿嶄綔閫氬父闇瑕佸己澶х殑騫惰澶勭悊涓旈潪甯擱傚悎浜庝嬌鐢?C++ 鑾峰緱鏈浣蟲ц兘銆傚湪寮鍙?Bing 鍦板浘鏃呰浼樺寲鍣紙浣跨敤 JavaScript 鍜?C++ 寮鍙戠殑 Metro 椋庢牸搴旂敤錛変腑錛屾垜浠湅鍒頒簡鍙︿竴縐嶆柟妗堬紝鍗充嬌鐢?C++ 鍒涘緩 Windows 榪愯鏃剁粍浠朵嬌鎴戜滑鍙互鍒涘緩鏈浣崇殑搴旂敤浣撻獙銆?/p>
鎮(zhèn)ㄥ彲鑳戒細鑰冭檻涓轟綍鐢ㄦ埛瀹屽叏浣跨敤鏈湴鏁版嵁璁$畻鏃呰璺嚎錛岃屼粬浠彲浠ュ湪浜戠鐨?Bing 鏈嶅姟鍣?/u>涓婅繍琛岃繖縐嶅ぇ璁$畻閲忕殑鎿嶄綔銆侭ing 鍦板浘涓哄叕寮鎵ц姝ゆ搷浣滅殑 JavaScript API錛岃屾湁鏃跺簲鐢ㄥ繀欏昏劚鏈鴻繍琛屻傚彟澶栵紝鎴戜滑涔熷笇鏈涚敤鎴烽氳繃瑙︽帶瀹炴椂鎷栧姩鍜屾洿鏀硅礬綰褲傚鏋滄垜浠湪鏈湴榪愯姝ょ被澶ч噺鐨勬搷浣滐紝鍒欐垜浠渶瑕佸垱寤虹敋鑷蟲洿濂界殑浣撻獙銆?/p>
閫氳繃浣跨敤騫惰浠誨姟綾誨簱鑰岀敤 C++ 緙栧啓澶ц綆楅噺鐨勬搷浣滐紝鎴戜滑鍙互鍒╃敤瀹㈡埛绔殑寮哄ぇ鍔熻兘鏉ヤ負鐢ㄦ埛鍒涘緩鍑鴻壊鐨勪嬌鐢ㄤ綋楠屻俉indows 榪愯鏃跺彲瀹岀編閫傜敤浜庤鏂規(guī)錛屽畠鍏佽鎴戜滑浣跨敤 Bing 鍦板浘 AJAX 鎺т歡鏉ュ垱寤轟嬌鐢?HTML 鍜?JavaScript 鐨勪赴瀵岀敤鎴風(fēng)晫闈?(UI)錛岃屼嬌鐢?C++ 浠g爜榪愯鐨勬墍鏈夊ぇ閲忚礬綰挎搷浣滃彲閫氳繃騫惰璁$畻鎻愰珮璁$畻鐨勯熷害銆?/p>
搴?/strong>
紺懼尯涓嫢鏈夌潃澶ч噺鑰屽嚭鑹茬殑搴擄紝寮鍙戜漢鍛樺凡榪涜姹囨誨茍涓庡箍澶х敤鎴峰叡浜傚湪榪囧幓錛屾?zhèn)ㄥ彲鑳戒細璁や负閲嶇敤鍏朵腑鐨勪竴浜涘簱鍙兘寰堝叿鎸戞垬鎬э紝濡傛灉瀹冧滑涓庡疄鐜版?zhèn)ㄧ殑搴旂敤鐨劸~栫▼璇█涓嶅尮閰嶇殑璇濄備緥濡傦紝鎮(zhèn)ㄦ瀯寤轟簡涓涓嚭鑹茬殑 .NET 搴旂敤錛屼絾蹇呴』瀹屾垚鐥涜嫤鐨勪簰鎿嶄綔钃濇錛堝 PInvoke錛夛紝鎵嶈兘浣跨敤閫氳繃 C++ 緙栧啓鐨勫簱銆?/p>
Windows 榪愯鏃跺彲浠ュ譏鍚?Windows 8 涓殑璇█鍒嗘錛屼嬌鍖呭惈鍗曚釜鍩烘湰浠g爜鐨勫崟涓 Windows 榪愯鏃剁粍浠跺簱鍙互鎵╁睍鑷蟲洿騫挎硾鐨勫紑鍙戜漢鍛橈紝鏃犺緇勪歡鐨勮璦鎴栧簲鐢ㄧ殑涓昏緙栫▼璇█鏄粈涔堛?/p>
鐜板湪錛屾?zhèn)ㄥ彲浠ュ垱寰忎竴涓彲渚涘叏閮?C++ 鍜?C# 寮鍙戜漢鍛樹嬌鐢ㄧ殑鍏紑 Windows 榪愯鏃剁殑鍗曚竴 XAML 鑷畾涔夋帶浠躲傛?zhèn)ㄥ彲浠ュ湪鎮(zhèn)ㄧ殑鍩轰?XAML 鎴?HTML 鐨?Metro 椋庢牸搴旂敤涓嬌鐢ㄧ敱寮鍙戜漢鍛樺叡浜殑鍚勭鏁版嵁瀛樺偍 Windows 榪愯鏃跺簱銆傛墍鏈夎繖浜涙柟妗堝潎鏃犻渶緙栧啓浜掓搷浣滀唬鐮佸嵆鍙疄鐜般?/p>
鎴戜滑璁や負 Windows 榪愯鏃跺皢鎯犲強鐢卞紑鍙戜漢鍛樺垱寤哄茍涓庣ぞ鍖轟腑騫挎硾鐨?Metro 椋庢牸搴旂敤錕斤拷鍙戜漢鍛樺叡浜殑鍚勭搴撱傜幇鍦紝鎴戜滑鏉ョ湅鐪嬩袱涓睍紺轟嬌鐢?C++/CX 鍜?C# 鏋勫緩絎笁璇?Windows 榪愯鏃剁粍浠剁殑鍏蜂綋紺轟緥銆?/p>
搴旂敤鍦烘櫙 1錛氶氳繃鏈満闊抽鏉ュ寮烘?zhèn)ㄧ殑搴旂?/strong>
鍋囪鎴戜滑瑕佷嬌鐢ㄦ嫢鏈?C# 緙栧啓鐨勫簲鐢ㄩ昏緫鏀寔鐨?XAML 鏉ユ瀯寤轟竴涓蔣浠跺悎鎴愬櫒搴旂敤銆備負浜嗗悜鎴戜滑鐨勯煶涔愬簲鐢ㄦ坊鍔犺繃婊ゅ櫒錛屾垜浠皢浣跨敤 XAudio 鏉ョ洿鎺ユ帶鍒墮煶棰戠紦鍐插櫒銆?/p>
灝?Windows 榪愯鏃剁粍浠舵坊鍔犲埌鎴戜滑鐨勮В鍐蟲柟妗?/p>
浣跨敤 Visual Studio錛屾垜浠彲浠ュ皢鍏ㄦ柊鐨?C++ Windows 榪愯鏃剁粍浠墮」鐩坊鍔犲埌鎴戜滑鐜版湁鐨勮В鍐蟲柟妗堛傝 Windows 榪愯鏃剁粍浠跺寘鎷煶涔愬鐞嗗姛鑳斤細
鍥?2錛氭坊鍔犱竴涓叏鏂扮殑 C++ Windows 榪愯鏃剁粍浠?/p>
Visual Studio 涓烘垜浠垱寤轟簡涓涓?C++ 欏圭洰錛岀敤浜庡叕寮 API錛岃?API 鐨勫疄鐜板皢鎵撳寘鍒頒竴涓?DLL 鏂囦歡錛岃?Windows 榪愯鏃跺厓鏁版嵁灝嗘墦鍖呭埌 winmd 鏂囦歡涓傚畠浠叏閮ㄥ彲鐢ㄤ簬鎴戜滑鐨?C# 欏圭洰銆?/p>
瀹氫箟鍚戞垜浠殑 XAML C# 欏圭洰鍏紑鐨勭被
鎴戜滑浣跨敤 C++/CX 鏉ユ瀯寤哄悜 C# 欏圭洰鍏紑鐨?API錛屼絾鎮(zhèn)ㄤ篃鍙互浣跨敤 Windows 榪愯鏃?C++ 妯℃澘搴?(WRL)銆傛垜浠鍏堝畾涔変竴涓潪甯稿熀鏈殑綾諱互灝佽 XAudio 鍔熻兘錛?/p>
XAudioWrapper.h
#pragma once
#include "mmreg.h"
#include <vector>
#include <memory>
namespace XAudioWrapper
{
public ref class XAudio2SoundPlayer sealed
{
public:
XAudio2SoundPlayer(uint32 sampleRate);
virtual ~XAudio2SoundPlayer();
void Initialize();
bool PlaySound(size_t index);
bool StopSound(size_t index);
bool IsSoundPlaying(size_t index);
size_t GetSoundCount();
void Suspend();
void Resume();
private:
interface IXAudio2* m_audioEngine;
interface IXAudio2MasteringVoice* m_masteringVoice;
std::vector<std::shared_ptr<ImplData>> m_soundList;
};
}
棣栧厛錛屾?zhèn)ㄥ繀椤绘敞鎰従c誨0鏄庝腑 public銆乺ef 鍜?sealed 絳夊叧閿瓧鐨勪嬌鐢ㄣ傚浜庨氳繃 JavaScript 鎴?C# 絳夊叾浠栬璦鍦?Metro 椋庢牸搴旂敤涓疄渚嬪寲鐨勭被鏉ヨ錛岃綾誨繀欏誨0鏄庝負 public ref class sealed銆?/p>
綾葷殑鍏叡鍔熻兘錛堟柟娉曘佸睘鎬х瓑錛変粎闄愪簬 C++ 鍐呯疆鐨勭被鍨嬫垨 Windows 榪愯鏃剁被鍨嬨傝繖浜涙槸鍙湪 Windows 榪愯鏃剁粍浠朵腑璺ㄨ秺璇█鐣岄檺鐨勫敮涓綾誨瀷銆備絾璇濊櫧濡傛錛屾?zhèn)ㄤ粛鐒跺彲浠畣甯歌鐨?C++ 搴擄紙鍗蟲爣鍑嗘ā鏉垮簱闆嗗悎錛夌敤浜庢?zhèn)ㄧ殑绫讳腑鐨勪笓鐢ㄦ暟鎹垚鍛樺Q屽鍦ㄨ浠g爜鏂腑鎵紺恒傝繖浜涗笓鐢ㄦ暟鎹垚鍛樻棤闇閬典粠涓庤法瓚婅璦鐣岄檺鏈夊叧鐨勮鍒欍傚鏋滄?zhèn)ㄤ娇鐢ㄤ笉鏀寔鐨勬瀯閫狅紝鍒?Visual Studio 緙栬瘧鍣ㄥ皢鍙戝嚭閿欒娑堟伅騫舵彁渚涚浉搴旂殑鎸囧銆?/p>
瀹炵幇鍦ㄦ垜浠殑 Windows 榪愯鏃剁粍浠朵腑鍏紑鐨勭被
鐜板湪錛屾垜浠凡瀹氫箟浜嗙被鐨勫熀鏈帴鍙o紝鎺ヤ笅鏉ヨ鎴戜滑鏉ョ湅鐪嬩竴浜涘疄鐜版柟娉曪細
XAudioWrapper.cpp
XAudio2SoundPlayer::XAudio2SoundPlayer(uint32 sampleRate) :
m_soundList()
{
// Create the XAudio2 engine
UINT32 flags = 0;
XAudio2Create(&m_audioEngine, flags);
// Create the mastering voice
m_audioEngine->CreateMasteringVoice(
&m_masteringVoice,
XAUDIO2_DEFAULT_CHANNELS,
sampleRate
);
}
void XAudio2SoundPlayer::Resume()
{
m_audioEngine->StartEngine();
}
bool XAudio2SoundPlayer::PlaySound(size_t index)
{
//
// Setup buffer
//
XAUDIO2_BUFFER playBuffer = { 0 };
std::shared_ptr<ImplData> soundData = m_soundList[index];
playBuffer.AudioBytes = soundData->playData->Length;
playBuffer.pAudioData = soundData->playData->Data;
playBuffer.Flags = XAUDIO2_END_OF_STREAM;
HRESULT hr = soundData->sourceVoice->Stop();
if (SUCCEEDED(hr))
{
hr = soundData->sourceVoice->FlushSourceBuffers();
}
//
// Submit the sound buffer and (re)start (ignore any 'stop' failures)
//
hr = soundData->sourceVoice->SubmitSourceBuffer(&playBuffer);
if (SUCCEEDED(hr))
{
hr = soundData->sourceVoice->Start(0, XAUDIO2_COMMIT_NOW);
}
return SUCCEEDED(hr);
}
鍦ㄨ浠g爜孌典腑錛屾垜浠嬌鐢ㄥ彲鐢ㄤ簬 Metro 椋庢牸搴旂敤寮鍙戠殑 XAudio2 COM API 鏉ヨ繛鎺ユ垜浠殑闊抽寮曟搸銆佹挱鏀懼0闊沖拰鎭㈠寮曟搸銆傚彟澶栵紝鎴戜滑榪樺彲浠ヤ嬌鐢?C++ 鏋勯犲拰闄?Windows 榪愯鏃剁被鍨嬩互澶栫殑鍏朵粬綾誨瀷鏉ュ疄鐜板繀瑕佺殑鍔熻兘銆?/p>
娣誨姞鍜屼嬌鐢?Windows 榪愯鏃剁粍浠?/strong>
鍦ㄥ畾涔夊拰瀹炵幇鍩烘湰綾諱箣鍚庯紝鎴戜滑浣跨敤 Visual Studio 鏉ュ皢 XAudioWrapper Windows 榪愯鏃剁粍浠朵粠鎴戜滑鐨?C# 欏圭洰娣誨姞鍒?C++ 欏圭洰錛?/p>

鍥?3錛氬皢 XAudioWrapper Windows 榪愯鏃剁粍浠舵坊鍔犲埌鎴戜滑鐨勯煶涔愬簲鐢?/p>
鍥犳錛屾垜浠粠 C++ 欏圭洰鍏紑鐨勭被鍙敤浜庢垜浠殑 C# 欏圭洰錛?/p>
MainPage.cs
using XAudioWrapper;
namespace BasicSoundApp
{
public sealed partial class MainPage : Page
{
XAudio2SoundPlayer _audioPlayer = new XAudio2SoundPlayer(48000);
public MainPage()
{
this.InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
_audioPlayer.Initialize();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
_audioPlayer.PlaySound(0);
}
}
}
濡傚湪璇ヤ唬鐮佹涓墍紺猴紝鎴戜滑鍙互鍍忎嬌鐢ㄥ父瑙?.NET 緇勪歡閭f牱涓?C# 涓殑 XAudio 灝佽紼嬪簭榪涜浜や簰銆傛垜浠皢寮曠敤鍏跺懡鍚嶇┖闂淬佷婦渚嬭鏄庣粍浠跺茍寮濮嬭皟鐢ㄥ叾鍏紑鐨勫悇縐嶆柟娉曘傛墍鏈夎繖涓鍒囦笉闇瑕佷換浣?DllImport 鏉ヨ皟鍏ユ湰鏈轟唬鐮侊紒
搴旂敤鍦烘櫙 2錛氫嬌鐢ㄥ唴緗殑 API 鍦ㄦ?zhèn)ㄧ殑搴旂敤涓墦寮 zip 鏂囦歡
鍋囪鎴戜滑浣跨敤 HTML 鏉ユ瀯寤烘枃浠舵煡鐪嬪櫒搴旂敤錛屽茍甯屾湜娣誨姞鍔熻兘鏉ュ厑璁歌搴旂敤鐨勭敤鎴烽夊彇 zip 鏂囦歡銆傛垜浠笇鏈涘皢 Windows 涓凡鍐呯疆騫跺湪 .NET 騫沖彴涓叕寮鐨?API 鐢ㄤ簬澶勭悊 zip 鏂囦歡銆?/p>
灝?Windows 榪愯鏃剁粍浠舵坊鍔犲埌鎴戜滑鐨勮В鍐蟲柟妗?/p>
璇ユ楠や笌鎴戜滑鍦ㄩ煶涔愬簲鐢ㄤ腑鎵鎻忚堪鐨勬楠ゅ畬鍏ㄧ浉鍚岋紝鐜板湪鎴戜滑灝嗛夊彇 C# Windows 榪愯鏃剁粍浠舵潵鍖呰 zip 澶勭悊鍔熻兘錛?/p>
鍥?4錛氭坊鍔犱竴涓叏鏂扮殑 C# Windows 榪愯鏃剁粍浠?nbsp;
Visual Studio 涓烘垜浠垱寤轟簡涓涓?C# 欏圭洰錛岀敤浜庡叕寮 API錛岃?API 鐨勫疄鐜板拰 Windows 榪愯鏃跺厓鏁版嵁閮藉皢鎵撳寘鍒?.winmd 鏂囦歡錛屽茍涓斿彲鐢ㄤ簬鎴戜滑鐨?Web 欏圭洰銆?/p>
瀹炵幇鍦ㄦ垜浠殑 Windows 榪愯鏃剁粍浠朵腑鍏紑鐨勭被
鎴戜滑浣跨敤 C# 鏉ユ瀯寤哄皢鍚戞垜浠殑 Web 欏圭洰鍏紑鐨?API錛屼絾鎮(zhèn)ㄥ悓鏍峰彲浠ヤ嬌鐢?Visual Basic銆傛垜浠鍏堝畾涔変竴涓畝鍗曠殑 C# 綾繪潵灝佽 zip 鍔熻兘錛?/p>
ZipWrapper.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Threading.Tasks;
using Windows.Foundation;
using Windows.Storage;
public sealed class ZipWrapper
{
public static IAsyncOperationWithProgress<IList<string>, double> EnumerateZipFileAsync(StorageFile file)
{
return AsyncInfo.Run(async delegate(
System.Threading.CancellationToken cancellationToken, IProgress<double> progress)
{
IList<string> fileList = new List<string>();
progress.Report(0);
using (var stream = await file.OpenStreamForReadAsync())
{
using (var archive = new ZipArchive(stream))
{
for (int i = 0; i < archive.Entries.Count; i++)
{
// add code for processing/analysis on the file
// content here
// add to our list and report progress
fileList.Add(archive.Entries[i].FullName);
double progressUpdate = ((i + 1) / ((double)archive.Entries.Count)) * 100; // percentage
progress.Report(progressUpdate);
}
}
}
progress.Report(100.0);
return fileList;
});
}
}
璇ョ被鏄叕鍏辯殑涓斿凡瀵嗗皝銆傜被浼間簬鏋勫緩 C++ Windows 榪愯鏃剁粍浠訛紝榪欏浜庡叾浠栬璦瀹炰緥鍖栫被鏉ヨ鏄繀闇鐨勩傝綾諱腑鍏紑鐨勯潤鎬佹柟娉曟販鍚堜嬌鐢?Windows 榪愯鏃剁被鍨嬶紙渚嬪錛孲torageFile錛夛紝騫朵笖鍦ㄦ柟娉曠鍚嶄腑浣滀負 .NET 綾誨瀷錛堜緥濡傦紝IList錛夈傛垜浠殑緇忛獙娉曞垯鏄嬌鐢?Windows 榪愯鏃剁被鍨嬫潵瀹氫箟鍚戝叾浠栬璦鍏紑鐨勫叕鍏卞瓧孌點佸弬鏁板拰榪斿洖綾誨瀷銆傚敖綆″姝わ紝鎮(zhèn)ㄤ粛鐒跺彲浠ュ師灝佷笉鍔ㄥ湴浣跨敤鏌愪簺 .NET 鍩烘湰綾誨瀷錛堝嵆 DateTimeOffset 鍜?Uri錛変互鍙婂熀鍏冿紙鍗?IList錛夈?/p>
鎮(zhèn)ㄨ繕浼氭敞鎰忓埌涓婅堪鏂規(guī)硶鍒╃敤浜嗗湪瀹氫箟鎮(zhèn)ㄧ殑 Windows 榪愯鏃剁粍浠舵椂鍙互錛堜笖搴旇錛変嬌鐢ㄧ殑鐢ㄤ簬寮傛鎬у拰榪涘害鏀寔鐨?Windows 榪愯鏃跺熀紜緇撴瀯銆傚氨璇ョ被涓殑 Windows 榪愯鏃剁粍浠舵垨浠諱綍涓撶敤鍔熻兘鐨勫疄鐜拌岃█錛屾?zhèn)q朵笉浠呴檺浜庝嬌鐢?Windows 榪愯鏃剁被鍨嬪拰 API錛涙?zhèn)ㄥ彲浠ヨ嚜鐢变娇鐢ㄤ恢M綍鍚?Metro 搴旂敤寮鍙戝叕寮鐨?.NET API 琛ㄩ潰錛屽浠g爜孌?ZipArchive API 涓墍紺恒?/p>
娣誨姞鍜屼嬌鐢?Windows 榪愯鏃剁粍浠?/strong>
鎴戜滑鐜板湪宸茬粡瀹炵幇浜?zip 宸ュ叿灝佽紼嬪簭錛屾垜浠皢浣跨敤 Visual Studio 鏉ユ坊鍔犳垜浠殑 JavaScript 欏圭洰涓 C# 欏圭洰鐨勫紩鐢細
鍥?5錛氬皢 ZipUtil Windows 榪愯鏃剁粍浠舵坊鍔犲埌鎴戜滑鐨勬枃浠舵煡鐪嬪櫒搴旂敤
鍥犳錛屾垜浠粠 C# 欏圭洰鍏紑鐨勭被灝嗗彲鐢ㄤ簬鎴戜滑鐨?Web 欏圭洰錛?/p>
program.js
function pickSinglePhoto() {
// Create the picker object for picking zip files
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;
openPicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.picturesLibrary;
openPicker.fileTypeFilter.replaceAll([".zip"]);
// Open the picker for the user to pick a file
openPicker.pickSingleFileAsync().then(function (file) {
if (file) {
ZipUtil.ZipWrapper.enumerateZipFileAsync(file).then(
function (fileList) {
for (var i = 0; i < fileList.length; i++)
document.getElementById('output').innerHTML += " " + fileList[i];
},
function (prog) {
document.getElementById('zipProgress').value = prog;
}
);
} else {
document.getElementById('output').innerHTML = "an error occurred";
}
});
};
姝e鎮(zhèn)ㄦ墍鐪嬪埌鐨勶紝鎴戜滑鍙互涓?JavaScript 涓垜浠殑 zip 宸ュ叿灝佽紼嬪簭榪涜浜や簰錛屽鍚屽畠鏄竴涓父瑙勭殑 JavaScript 瀵硅薄銆傛垜浠彲浠ヨ皟鍏?Windows 榪愯鏃剁粍浠朵腑鍏紑鐨勯潤鎬佹柟娉曪紝鑰屾垜浠嬌鐢?JavaScript 鐨勫紓姝ヨ璦鏋勯狅紝濡?.then()錛屼篃鍙互瀹屾垚姝ゆ搷浣溿?/p>
涓鑸寚瀵?/strong>
騫墮潪鎮(zhèn)ㄤ負 Metro 椋庢牸搴旂敤緙栧啓鐨勬墍鏈?API 閮藉簲鍏紑涓虹涓夋柟 Windows 榪愯鏃剁粍浠躲傞氬父鎯呭喌涓嬶紝褰撴?zhèn)ㄥ湪涓嶅悓鐨劸~栫▼璇█涔嬮棿榪涜閫氫俊鏃墮渶瑕佷嬌鐢?Windows 榪愯鏃剁粍浠剁被鍨嬶紝騫朵嬌鐢ㄨ璦涓唴緗殑綾誨瀷鍜屾瀯閫犳潵瀹炵幇鏃犳硶閫氳繃 Windows 榪愯鏃剁粍浠跺叏灞鍏紑鐨勫姛鑳姐傚彟澶栵紝璺ㄨ秺璇█鐣岄檺榪樻秹鍙婂悇縐嶈璦鐗瑰畾鐨勫姛鑳藉拰瑙勫垯錛屽綋鏋勫緩 Windows 榪愯鏃剁粍浠舵椂錛屾?zhèn)ㄥ繀椤粸畣鍏毒U沖叆鑰冭檻鑼冨洿銆傚畠浠叿浣撳寘鎷唬鐞嗗拰浜嬩歡銆佸紓姝ユ搷浣溿佹柟娉曢噸杞藉拰澶勭悊鐗瑰畾鐨勬暟鎹被鍨嬶紙渚嬪錛岄泦鍚堛佸紓甯稿鐞嗗拰璋冭瘯鎶宸э級銆傛?zhèn)ㄥ彲浠ラ氳繃璁塊棶鏋勫緩 Windows 榪愯鏃剁粍浠朵腑闈㈠悜鎮(zhèn)ㄧ殑寮鍙戣璦鐨勯儴鍒嗭紝鏉ユ繁鍏ョ爺絀惰繖浜涗富棰樸?/p>
鎬葷粨
灝?Windows 榪愯鏃剁粍浠惰岃█錛屾?zhèn)ㄧ幇鍦ㄥ彲浠ユ贩鍚堜娇鐢ň~栧啓璇█鍜?API 鎶鏈潵鏋勫緩鎮(zhèn)ㄨ鎯崇殑搴旂敤銆傛涓嶈縼灝辯殑鐞嗗康璐┛浜?Windows 8銆傚嵆浣挎槸鍦ㄥ紑鍙戦樁孌墊儏鍐典緷鐒跺姝わ紝鎴戜滑鍏佽鎮(zhèn)ㄦ販鍚堜嬌鐢ㄥ拰鍖歸厤閫傜敤浜庢?zhèn)ㄧ殑鏂规鐨勬渶浣崇紪紼嬭璦銆傛垜甯屾湜榪欏皢浣挎?zhèn)ㄨ兘澶熺敤鏇村鐨勬棄櫁存潵鑰冭檻鍒涙柊錛岃屼笉鏄湪瀛︿範(fàn)鍏ㄦ柊鐨勭紪紼嬭璦鏂歸潰嫻垂澶ч噺鐨勬椂闂淬?/p>
甯屾湜鎮(zhèn)ㄨ兘鍏呭垎浜彈鏋勫緩搴旂敤涓烘?zhèn)ㄥ甫鏉ョ殑蹇箰锛?/p>
-- Windows 欏圭洰緇忕悊 Ines Khelifi
銆銆涓嶅儚 Win32 鏄敤C璇█鎬濇兂璁捐鐨勶紝鑰?WinRT API 鏄敤 C++ 緙栧啓鐨勶紝騫朵笖浠庝竴寮濮嬬殑璁捐灝辨槸闈㈠悜瀵硅薄鐨勩備竴鑷存с佹槗鐢ㄦс佷互鍙婃ц兘閮芥槸鏂扮殑榪愯鏃?API 鐨勯噸瑕佹柟闈€俉inRT API 涓殑姣忎釜瀵硅薄閮芥敮鎸佸弽灝勶紝浠ヤ究鐢氳嚦榪炶濡?JavaScript 絳夊姩鎬佽璦閮藉彲鏈夋晥鍦頒嬌鐢ㄥ畠浠傞殢涔嬭屾潵榪樻湁緇熶竴瀵硅薄妯″瀷錛岃繖瀵逛簬鍩轟簬搴撶殑 C++ 鑰岃█鏄釜紼緗曠墿銆?/p>
銆銆闄勬敞錛歐in32 API 騫舵湭琚Щ闄わ紝鑰屼笖閭d簺浣跨敤浼犵粺搴旂敤紼嬪簭鎵ц鐜鐨勮緝鏃╃殑搴旂敤紼嬪簭灝嗙戶緇寜棰勬湡鏂瑰紡宸ヤ綔銆?br />
銆銆C++寮鍙?/strong>
銆銆鍦?C++ 涓紪鍐欑敤鎴風(fēng)晫闈㈠皢棣栭?XAML銆傛墍鏈変笌 XAML 涓璧蜂嬌鐢ㄧ殑搴撻兘宸茶縐繪鍒癈++錛屽茍涓旇緙栬瘧涓烘湰鍦?x86 鐗堟湰銆備嬌鐢?XAML 鍜?C++ 緙栧啓鐨?Metro 椋庢牸搴旂敤紼嬪簭騫朵笉榪愯鍦?.NET 涔嬩笂錛屽畠浠氨鍍忓叾浠栦換浣?Visual C++ 搴旂敤紼嬪簭涓鏍鳳紝琚洿鎺ョ紪璇戜負 x86 鐗堟湰銆?/p>
銆銆璋冪敤 UI 鎺т歡鐨勬柟娉曞氨鍍忓湪 C++ 涓皟鐢ㄤ換浣曞叾浠栧璞$殑鏂規(guī)硶涓鏍楓傚湪鏈哄櫒鐮佺駭鍒笂錛屾煇涓寚浠ゅ皢 this 鎸囬拡鎺ㄩ佸埌鍫嗘爤涓婏紝鐒跺悗閫氳繃铏氬嚱鏁拌〃錛坴-table錛夎皟鐢ㄧ浉搴斿嚱鏁般傝繖浣垮緱鍗充嬌鍦ㄤ綆鍔熻楄澶囦笂涔熻兘杈懼埌鏈浼樼殑鎬ц兘銆?/p>
銆銆鏀寔涓浜涚幇浠g殑 C++ 搴旂敤紼嬪簭鎵鐢ㄧ殑搴擄紝渚嬪 Boost銆?br />
銆銆閲嶅彔紿楀彛涓嶅瀛樺湪
銆銆瀵硅瘽妗嗘槸鏉ヨ嚜涓婁竴鐗?Windows 鐨勬牳蹇冩蹇碉紝鑰屽湪 WinRT 涓畠?yōu)畣涓嶅瀛樺湪銆傚浜庡井杞岃█錛屾ц兘鎴愭湰鍜屽彲鐢ㄦч棶棰樺凡涓嶅啀鏄悊鎵褰撶劧鐨勩傚笇鏈涗嬌鐢ㄨ繖縐嶆ā寮忕殑搴旂敤紼嬪簭灝嗚寮鍙戝叾浠栫殑鏂瑰紡鏉ヤ紶閫掍俊鎭紝渚嬪娑堟伅妗嗙殑鏂瑰紡銆?/p>
銆銆鍙︿竴騫舵湭綰沖叆 WinRT 鐨勫簱鏄?GDI銆傚鏋滄煇涓簲鐢ㄧ▼搴忚浣跨敤 Metro 椋庢牸鐣岄潰錛岄偅涔堝畠闇瑕佹寜鑷笂鑰屼笅鐨勬柟寮忔潵鍋氾紝灝?Metro 椋庢牸涓庣粡鍏哥敤鎴風(fēng)晫闈㈢浉娣峰悎鐨勬儏鍐墊槸涓嶅彲鑳藉嚭鐜扮殑銆?br />
銆銆PlayTo 濂戠害
銆銆鍙︿竴琚叕寮鐨勫綰︽槸 PlayTo錛堢敱……鍙戞尌錛夈傝繖浣垮緱搴旂敤紼嬪簭鍙彂閫佸闊抽鍙婅棰戠瓑濯掍綋鏂囦歡鍒版煇涓?charm[1]銆傜劧鍚庨偅涓?charm 灝嗗厑璁哥敤鎴烽夋嫨鏌愪釜浠栦滑鎯崇敤鐨勫簲鐢ㄧ▼搴忔潵鏌ョ湅璇ユ枃浠躲傛嵁鎺ㄦ祴錛屽獟浣撴枃浠朵笉浠呴檺浜庣墿鐞嗘枃浠訛紝鑰屾槸浠諱綍鍙〃紺轟負鏁版嵁嫻佺殑濯掍綋褰㈠紡銆?br />
銆銆C#/VB錛氬鉤鍙拌皟鐢紙P/Invoke錛変箣緇堢粨
銆銆浠?.NET 涓皟鐢ㄦ湰鍦板嚱鏁伴氬父娑夊強寤虹珛緇撴瀯鍜屾搷綰墊寚閽堛傝屽湪 WinRT 鐜涓嬶紝鎵鏈夌殑 API 琚叕寮涓鴻澶氬彲閫氳繃 C# 鍙?VB 鐩存帴浣跨敤鐨勫璞°傝繖鎶?.NET 寮鍙戣呯疆浜庝笌 C++ 寮鍙戣呭鉤絳夌殑灞傞潰涓娿?/p>
銆銆搴旂敤紼嬪簭鐨勫搷搴旈熷害瀵逛簬寰蔣鑰岃█鏄潪甯擱噸瑕佺殑銆傛墍鏈夎楁椂瓚呰繃 50 姣鐨勬搷浣滅郴緇熺駭鍒殑 API 璋冪敤灝嗚鍏紑涓哄紓姝ユ搷浣滐紝姝f槸涓轟簡鍚戝紑鍙戣呬紶閫掕繖縐嶄環(huán)鍊艱銆?br />
銆銆JavaScript
銆銆瀵逛簬 Windows 8 鑰岃█錛岀鍥涘ぇ璇█灝辨槸 JavaScript銆傚敖綆″畠涓嶄嬌鐢?XAML錛屼絾瀹冨氨鍍忔湰鍦板強 .NET 搴旂敤紼嬪簭涓鏍鳳紝鎷ユ湁瀵瑰簳灞?WinRT API 鐨勭洿鎺ヨ闂潈銆傝繖涓嶄粎鏄釜鍍?PhoneGap 涓鏍風(fēng)殑瀹瑰櫒錛孞avaScript 寮鍙戣呰繕鍙幏寰椾笌鍏朵粬寮鍙戣呮墍浣跨敤鐨勫悓鏍蜂赴瀵岀殑 API銆?/p>
銆銆鐢變簬鏄?JavaScript錛屽洜姝ゆ墍閫夋嫨鐨?UI 宸ュ叿鍖呮槸 HTML 鍜?CSS 鑰岄潪 XAML銆侷E 10 鍙?Metro 椋庢牸鐨?JavaScript 搴旂敤紼嬪簭浣跨敤鐨勬槸鍚屼竴娓叉煋寮曟搸錛屽敖綆¢偅浜涘簲鐢ㄧ▼搴忓疄闄呭茍涓嶈繍琛屽湪嫻忚鍣ㄤ腑銆侸avaScript 搴旂敤紼嬪簭鐪嬭搗鏉ュ氨鍍忎換浣曞叾浠?Metro 椋庢牸搴旂敤紼嬪簭涓鏍楓?/p>
銆銆JavaScript 涓殑鐢ㄦ埛鎺т歡鍑犱箮涓?C++ 鍙?.NET 涓殑鎺т歡涓嶇浉涓婁笅銆傛湁浜涙帶浠跺浜?HTML 娓叉煋寮曟搸鑰岃█鏄浐鏈夌殑錛岃屽彟澶栦竴浜涙帶浠跺垯鏄敤 JavaScript 緙栧啓鐨勩傝繖浜涘熀浜?JavaScript 鐨勬帶浠墮兘鏄熀浜?div 鐨勶紝闈炲父鍍忛偅浜涗嬌鐢?jQuery 鍒涘緩鐨勬帶浠躲?br />
銆銆搴旂敤紼嬪簭瀹瑰櫒鍜屽簲鐢ㄧ▼搴忔潈闄?/strong>
銆銆Metro 椋庢牸搴旂敤紼嬪簭榪愯鍦ㄨ縐頒負“搴旂敤紼嬪簭瀹瑰櫒”錛坅pp container錛夌殑鐜涓傝繖浼間箮鍙栦唬浜嗙敱鍩轟簬 Win32 搴旂敤紼嬪簭鎵浣跨敤鐨勭獥浣撶幆澧冦?/p>
銆銆澶у鏁?API 璋冪敤琚洿鎺ュ彂閫佺粰搴曞眰鍐呮牳銆傜劧鑰岋紝鏈変簺璋冪敤灝嗚閫氳繃緋葷粺浠g悊錛坰ystem broker錛夎礬鐢便傜郴緇熶唬鐞嗙‘淇濆簲鐢ㄧ▼搴忓彧鑳借闂偅浜涚粡鐢ㄦ埛宸叉壒鍑嗙殑鍔熻兘銆備緥濡傦紝褰撴煇涓簲鐢ㄧ▼搴忛嬈″皾璇曡闂憚鍍忓ご鏃訛紝鏈嶅姟浠g悊錛坰ervice broker錛夊皢鎻愮ず鐢ㄦ埛浠ヨ幏鍙栦粬浠殑鎵瑰噯銆傚簲鐢ㄧ▼搴忓繀欏誨寘鎷竴浠芥竻鍗曪紝鍏朵腑娉ㄦ槑璇ュ簲鐢ㄧ▼搴忓彲鑳介渶瑕佺殑鎵鏈夐檺鍒舵湇鍔°傝繖縐嶆ā寮忓浜庣Щ鍔ㄨ澶囧紑鍙戣呰岃█灝嗘槸闈炲父鐔熸?zhèn)夌殑銆?/p>
銆銆鎵鏈?Metro 椋庢牸搴旂敤紼嬪簭閮戒細榪愯鍦?WinRT 鐨勫簲鐢ㄧ▼搴忓鍣ㄤ腑錛岃屼笖浼氬彈鍒扮郴緇熶唬鐞嗙殑鐩戞帶錛岀敋鑷寵繛閭d簺鐢?C++ 緙栧啓鐨勫簲鐢ㄧ▼搴忎篃涓嶄緥澶栥傝鎬濇兂鏄負浜嗛檺鍒跺簲鐢ㄧ▼搴忕牬鍧忕郴緇熺殑鑳藉姏銆傝櫧鐒朵篃璁稿茍涓嶆槸涓嶅彲鑳界殑錛屼絾鏄湪 WinRT 涓嬪垱寤烘伓鎰忚蔣浠朵笌鍦?Win32 涓浉姣斿皢浼氶毦寰楀銆?br />
銆銆鎵鏈?Metro 椋庢牸搴旂敤紼嬪簭蹇呴』榪涜鏁板瓧絳懼悕
銆銆涓嶅厑璁稿尶鍚嶅簲鐢ㄧ▼搴忋傚簲鐢ㄧ▼搴忎負浜嗘祴璇曞彲榪涜鑷鍚嶏紝浣嗘槸褰撳畠浠嚭鐜板湪搴旂敤鍟嗗簵閲屾椂錛屽畠浠氨蹇呴』浣跨敤鐪熷疄璇佷功榪涜絳懼悕銆?/p>
銆銆璇戞敞
銆銆[1] charm錛屽井杞凡灝?#8220;CHARM”娉ㄥ唽涓鴻綆楁満銆佽蔣浠朵駭鍝併佺數(shù)姘斿拰縐戝浜у搧綾誨晢鏍囥傚井杞皢 CHARM 鎻忚堪涓鴻綆楁満紼嬪簭銆佸浘褰㈢敤鎴風(fēng)晫闈㈣蔣浠跺拰鎿嶄綔緋葷粺紼嬪簭銆傚湪瑙︽懜鐗?Windows 8 涓紝charms 鍦ㄥ睆騫曞彸渚э紱鍦ㄤ紶緇熺増錛堜嬌鐢ㄩ紶鏍囧拰閿洏錛塛indows 8 涓紝charms 鍑虹幇鍦ㄥ睆騫曞乏渚с俢harms 鍖呮嫭錛歋earch錛堟悳绱級銆丼hare錛堝垎浜級銆丼tart錛堝紑濮嬶級銆丏evices錛堣澶囷級銆丼ettings錛堣緗級銆傝瑙佸井杞敵璇?Windows 8 鍔熻兘 charm 娉ㄥ唽鍟嗘爣錛堝浘錛夈?br />
銆銆浣滆咃細Jonathan Allen 璇戣咃細楂樼繉緲?/p>
銆銆鏌ョ湅鑻辨枃鍘熸枃錛?/strong>WinRT: An Object Orientated Replacement for Win32
銆銆鐩稿叧鍗氬鏂囩珷錛?/strong>Windows Runtime(WinRT) 鎻
鏈榪戜粠鏋舵瀯鐨勮搴﹀仛浜嗕竴涓?Windows 8 涓?Metro Style 搴旂敤紼嬪簭寮鍙戜粙緇嶇殑璁插駭銆備互涓嬫槸璁茬ǹ銆?/p>
濡傛湁闂?gòu)脾杩庢寚姝c?/p>
涓嬭澆鍦板潃錛?/p>
榪欑瘒鐨勬爣棰樺彨鍋歐indows RT Introduction鑰岄潪Windows 8 Introduction鏄兂寮鴻皟姝ゆ浠嬬粛鏄粠寮鍙戜漢鍛樼殑瑙掑害鑰屼笉鏄櫘閫氱敤鎴風(fēng)殑瑙掑害鍑哄彂鐨勩傚悓鏃訛紝鎴戜滑鍏蟲敞鐨勬槸Metro Style搴旂敤鑰屼笉鏄紶緇熺殑Win32搴旂敤紼嬪簭鐨勫紑鍙戙?/p>
瀹為檯涓婏紝浣跨敤C#鎴栬匟TML + Javascript涔﹀啓涓涓狧ello world搴旂敤鐨勪唬鐮佷緥瀛愬凡緇忓湪緗戜笂娉涙互浜嗐備絾鏄粎鏈変竴涓狧ello world騫朵笉鑳藉璇翠綘鎺屾彙浜哤in RT鐨勫紑鍙戙備粠Pro鐨勮搴︽潵璇存垜浠簲璇ュ紕娓呮鏁翠歡浜嬫儏鐨勭粏鑺傘傞偅涔堥鍏堝氨搴斿綋鏄粬鐨勬灦鏋勩傝繖鏍峰啓璧風(fēng)▼搴忔潵鎵嶈兘蹇冨畾銆?/p>
Windows 8鐨勫簲鐢ㄧ▼搴忔樉紺烘ā寮忕洰鍓嶆湁涓ょ錛屽畾涔夊湪METRO_MONITOR_MODE涓細鍗充紶緇熺殑妗岄潰妯″紡錛圡MM_Desktop錛変互鍙奙etro妯″紡錛圡MM_Metro錛夈傚鏋滀綘鏄疻indows Phone鐢ㄦ埛鐨勮瘽鍙兘灝變細瀵筂etro姣旇緝鐔熸?zhèn)夈備簨瀹炰笂錛屽井杞湪2009騫村惎鍔╓indows 8鐨勭爺鍙戝伐浣滄椂鐩爣鏄垱閫犱竴涓畬鍏ㄤ笉鍚屼互寰鐨勬搷浣滅郴緇燂紝瀹屽叏涓嶄互涔嬪墠鐨勬搷浣滅郴緇熶負钃濇湰銆傝屽悗鍙戠幇Desktop搴旂敤鏄笉鍙垨緙虹殑閮ㄥ垎鑰屽皢涓や釜閮ㄥ垎榪涜鍚堝茍銆備竴寮濮嬬敤鍙兘浼氭湁浜涘埆鎵紝浣嗘槸鎴戜及璁″紑鍙戜漢鍛樺崐澶╀箣鍐呭氨鑳藉鐔熺粌浣跨敤榪欎釜緋葷粺浜嗐?/p>
鏃㈢劧鏈変袱縐嶆ā寮忛偅涔堟垜浠嚜鐒跺氨浼氬叧娉ㄤ粬浠殑涓嶅悓鐐廣傝繖涓棶棰樺簲璇ヤ粠鏋舵瀯鍥句笂鍋氫竴涓嬭鏄庝絾鏄垜浠彲浠ュ厛鏈変竴浜涚洿瑙傜殑璁よ瘑銆?/p>
娑堟伅澶勭悊鐨勭紪紼嬫槸浼犵粺Desktop搴旂敤紼嬪簭鐨勯噸瑕侀儴鍒嗐備綘闇瑕佷功鍐欑淮鎶essage Loop鐨勪唬鐮併備緥濡傦細鍦╓inMain璋冪敤錛堟垨鑰呭叾瀛愪緥紼嬩腑錛変綘闇瑕佷功鍐欑被浼?/p>
|
while (::GetMessage(&message, NULL, 0, 0)) { ::TranslateMessage(&message); ::DispatchMessage(&message); } |
鑰屽湪Window鍒涘緩涔嬪墠鍊欎綘涓瀹氭寚瀹氫簡
|
WNDCLASS wndClass; // ... wndClass.lpfnWndProc = WndProc; |
榪欐牱浣犲氨鍙互鍦╓ndProc鍑芥暟涓喅瀹氱壒瀹歮essage鐨勬祦鍚戜簡銆傚浜庣粯鍥炬潵璇達紝浣犱竴瀹氭槸鎺ュ彈浜哤M_PAINT娑堟伅錛岀劧鍚庢墽琛屼簡鍖哄煙閲嶇粯銆?/p>
浣嗗湪Metro App涓繖浜涢兘宸茬粡闅愯棌浜嗭紝鑰屼笖娑堟伅鐨勭粏鑺備篃鍙兘鍙戠敓浜嗗彉鍖栥侻etro App涓綘鐪嬩笉鍒版秷鎭驚鐜備竴鍒囧叧浜庣晫闈㈡秷鎭殑鍒嗗彂閮介殣钘忓湪浜咰oreDispatcher涓傚洜姝ゅ鏋滀綘鐢⊿py++鍘昏瘯鎺etro App鐨勬秷鎭驚鐜偅涔堜綘浠涔堥兘鎶撲笉鍒般?/p>
鍦ㄤ紶緇熺殑Desktop搴旂敤紼嬪簭涓紝緇樺浘鍙兘閫氳繃GDI錛孏DI+錛孌irectDraw錛孌irectX榪涜銆傚悓鏍烽氳繃鎹曡幏WM_PAINT娑堟伅鎴栬呭綋緋葷粺澶勪簬IDLE鐨勬椂鍊欒繘琛岀粯鍥撅紙瀵逛簬娓告垙緙栫▼鏉ヨ錛夈?/p>
鑰孧etro App涓嶄細鍐嶆敮鎸丟DI鍜孏DI+錛屽湪Metro App涓粯鍥懼彧鑳介氳繃DirectX鏉ヨ繘琛屻傜‘鍒囩殑璇存槸Direct3D鍜屾柊鍏竷鐨凞irect2D銆丏irect Write API銆傚洜姝etro搴旂敤鐨勬墍鏈夌粯鍥鵑兘鏄笇鏈涙槸紜歡鍔犻熺殑銆傝繖縐嶇粯鍥炬洿楂樻晥錛岃В鏀綜PU錛岃屼笖涓鑸笉闇瑕佸鐞嗗鏉傜殑Dirty Region Repaint銆?/p>
Metro App騫舵病鏈夊叧闂獥鍙h繖縐嶆寜閽傚叾鐢熷懡鍛ㄦ湡鏄敱緋葷粺鎵樼鐨勩傜郴緇熶細鍐沖畾浠呬粎鏄寕璧峰簲鐢ㄦ墽琛岃繕鏄渶瑕佸畬鍏ㄩ攢姣佸簲鐢ㄨ繘紼嬨傝繖鍜屼竴鑸剰涔変笂鐨凞esktop搴旂敤紼嬪簭涓嶄竴鏍楓傦紙褰撶劧錛屼綘涔熷彲浠ヤ嬌鐢ˋlt+F4鏄劇ず鐨勭粨鏉烳etro App鐨勬墽琛岋級銆?/p>
浼犵粺鐨勬闈㈠簲鐢ㄧ▼搴忔湁澶氱鎵嬫榪涜鍏叡緇勫緩鐨勫叕鐢ㄦ垨IPC銆備絾鏄湪Metro App涓紝闅旂鏄竴涓緢閲嶈鐨勬蹇碉紝搴旂敤鐨勫彲鎵ц閮ㄥ垎錛岃繍琛屽簱錛孖solated Storage閮芥槸鐙珛鐨勶紝涓嶈兘澶熷叡鐢ㄣ傚悓鏍鳳紝涓嶈兘澶熶嬌鐢ㄤ紶緇熺殑IPC鏈哄埗銆傚簲鐢ㄧ▼搴忕殑浜掑姩浠呬粎鍙互閫氳繃鍐呯疆鐨凜ontracts榪涜錛屽叧浜庤繖涓閮ㄥ垎鍐呭鍙互鏌ョ湅MSDN錛?/p>
http://msdn.microsoft.com/en-us/library/windows/apps/hh464906.aspx
浼犵粺鐨凞esktop搴旂敤紼嬪簭鐨勬敮鎸佸ぇ澶氫負x86/64鏋舵瀯鐨勫鐞嗗櫒銆傜敱浜嶮etro鐜鍙互瀹屾暣榪愯鍦ˋRM澶勭悊鍣ㄤ笂鏄竴涓噸瑕佺殑鐗規(guī)э紝鍥犳Metro App鍙互榪愯鍦ˋRM澶勭悊鍣ㄤ笂錛屽嵆鍚屾椂閮ㄧ講鍦≒C鍜岀Щ鍔ㄨ澶囦笂銆?/p>
褰撶劧涓轟簡Portability鐨勮姹傦紝蹇呯劧瑕佹眰搴旂敤涓嶈兘澶熻秺榪嘩in RT鐨勬娊璞★紝鍥犳Metro鏄笉鑳藉儚Desktop App閭f牱璁塊棶鎵鏈夌殑Windows API鐨勩?/p>
鎴戜滑瀵筗indows RT鐨勪粙緇嶉兘灝嗗洿緇曠潃榪欎釜鍥懼睍寮銆?/p>
鍦ㄨ繖涓浘涓紝鏈搴曞眰鐨勬槸NT鐨勫唴鏍革紱鍦ㄥ叾涓婃槸Windows瀛愮郴緇熴傚疄闄呬笂NT鑷沖皯鏈変笁涓瓙緋葷粺錛學(xué)indows瀛愮郴緇燂紝POSIX瀛愮郴緇燂紙Unix錛夊拰OS/2瀛愮郴緇熴侾OSIX瀛愮郴緇熷拰OS/2瀛愮郴緇熷疄闄呰繕鏄湪浣跨敤Windows瀛愮郴緇熴?鍦╓indows瀛愮郴緇熶笂鍒掑垎浜嗕笉鍚岀殑榪愯鏃訛紙姍欒壊錛夊拰紼嬪簭搴擄紙嫻呰摑鑹詫級錛屾渶涓婇潰鐨勭豢鑹叉槸鎴戜滑浣跨敤鐨勫悇縐嶅紑鍙戣璦銆?/p>
榪欎釜鏋舵瀯鍥懼疄闄呬笂璇存槑浜嗕竴鍒囥傚茍涓旀秷闄や簡寰堝璇В錛?/p>
錛?錛?nbsp; 絎竴涓瑙f槸INFOQ鎸囧嚭鐨刉indows RT鍜學(xué)in32鏄畬鍏ㄥ垎寮鐨勩傝繖婧愪簬寰蔣鍙戝竷鐨勪竴騫呴ケ鍙楁壒璇勭殑鏋舵瀯鍥撅紝鍦ㄩ偅寮犳灦鏋勫浘涓紝W(xué)indows RT鍜學(xué)indows瀛愮郴緇熺珶鐒舵槸騫舵帓鎺掑垪鐨勩傝繖鏄緢鑽掕艾鐨勶紝W(xué)indows RT瀹為檯涓婂熀浜嶹indows瀛愮郴緇熴傞鍏圵indows RT瀹屽叏鍩轟簬COM錛涘叾嬈indows RT鍒╃敤浜嗕竴閮ㄥ垎鐜版湁鐨刉in32 API錛涘叾浣欑殑閮ㄥ垎Windows RT鍒欑洿鎺ヨ闂甆T鍐呮牳銆?/p>
錛?錛?nbsp; 絎簩涓瑙f槸C++/CX銆侰++/CX鏄井杞帹鑽愮殑寮鍙慦indows RT鐨勬柟寮忋備粬涓昏闅愯棌浜咰OM鐨勫鏉傛с傚叧浜庤繖涓棶棰樻垜浠悗緇細鏈夎鏄庛傝繖涓瑙f槸C++/CX瀹為檯灝辨槸C++ CLI銆傚疄闄呬笂榪欐槸涓や釜瀹屽叏涓嶅悓鐨勪笢瑗匡紝C++ CLI鏄繍琛屽湪鎵樼鐜涓嬬殑錛岃孋++/CX瀹屽叏鏄疦ative鐨勩?/p>
浠庢灦鏋勫浘涓彲浠ョ湅鍑猴紝W(xué)in RT浠呬粎鐢ㄤ簬Metro搴旂敤銆傚茍縐夋壙浜嗘垜浠垰鎵嶄粙緇嶇殑錛岀畝鍗曢儴緗詫紝娌℃湁鍏變韓鐨勭粍浠訛紝娌℃湁IPC錛岀瓑絳夈?/p>
榪欎篃鏄負浠涔堣Windows RT鏄瀯寤轟笌Win32涔嬩笂錛屽洜涓篊OM鏄疻in32閲嶈鐨勭粍鎴愰儴鍒嗐傝繖鎰忓懗鐫錛?/p>
錛?錛?nbsp; 浣犲彲浠ョ敤涔嬪墠鎵鏈夌殑娑堣垂COM鐨勬柟寮忔潵浣跨敤Windows RT錛屼綘鍙互鐢–錛屼綘鍙互鐢ˋTL鎴栬呮柊鐨刉RL錛?/p>
錛?錛?nbsp; WRL瀹屽叏絎﹀悎浼犵粺鐨凜++璇硶錛岃繖鎰忓懗鐫浣犲彲浠ヤ嬌鐢ㄤ笉鍚岀殑緙栬瘧鍣紙渚嬪Intel C++緙栬瘧鍣級鏉ユ瀯寤篗etro搴旂敤銆備絾鏄井杞樉鐒跺笇鏈涘ぇ瀹墮兘鏉ヤ嬌鐢–++/CX錛學(xué)RL鐨勬枃妗h窡娌℃湁宸笉澶氾紝鐜板湪涔熺湅涓嶅埌涓涓畬鏁寸殑渚嬪瓙鍑虹幇銆?/p>
Win RT鏄熀浜嶤OM鐨勶紝浣嗘槸COM浠呬粎鏄竴涓簩榪涘埗鍗忚鑰屽凡銆傚湪COM Interface瀹炵幇涓粠鎶鏈笂璁茶繕鏄湪璋冪敤Win32 API銆備絾鐢變簬鍓嶉潰浠嬬粛鐨刉in RT鐨勮璁¤姹傦紝緋葷粺API鐨勮皟鐢ㄩ渶瑕佸彈鍒頒弗鏍肩殑闄愬埗銆備粎浠呮敮鎸佹湁闄愮殑API璋冪敤錛屽洜姝ゅ湪浣犲笇鏈涗嬌鐢ㄤ竴涓猈in32 API鏃訛紝涓瀹氳鏌ヨMSDN涓婄殑Applied To涓鑺傦紝鐪嬬湅鏄惁鏄疢etro Style App | desktop App銆?/p>
鍚屾牱鐨勯亾鐞嗭紝.NET鐨勬煇浜涙柟娉曚篃鍦ㄨ繘琛岀潃緋葷粺璋冪敤錛屽洜姝ゅ湪浣跨敤.NET寮鍙慚etro Style搴旂敤紼嬪簭鐨勬椂鍊欎篃騫朵笉鏄墍鏈夌殑紼嬪簭闆嗛兘鑳藉鏀寔銆傚綋鐒訛紝濡傛灉浣跨敤P-Invoke鐨勬柟寮忚皟鐢╓in32 API閭d箞鍗遍櫓鎬у氨浼氭洿澶с?/p>
鎬諱箣錛屽湪Metro搴旂敤涓皟鐢ㄤ笉鏀寔鐨刉in32 API浼氭湁濡備笅鐨勫悗鏋滐細
錛?錛?nbsp; 鍙戠敓涓涓猂untime Exception錛?/p>
錛?錛?nbsp; 搴旂敤紼嬪簭澶卞幓鍝嶅簲錛屽挨鍏舵槸鍦ㄤ嬌鐢ㄥ拰娑堟伅寰幆鐩稿叧鐨勪唬鐮佹椂銆備緥濡傚Metro App榪涚▼浣跨敤WaitForSingleObject(hProcess)銆?/p>
錛?錛?nbsp; 璋冪敤鎴愬姛錛屼絾鏄綘鐨凪etro App搴旂敤浼氳Windows Store椹沖洖銆?/p>
鎸夌収涓婅堪鍒嗘瀽錛岄偅涔堝嵆浣夸綘瀛樺湪鐩稿綋鍙鐨凜OM浠g爜搴擄紝涔熼渶瑕佸法澶х殑鍔姏鎵嶈兘澶熶繚璇佷粬浠湪Metro App涓婃紜繍琛岋紙娑堥櫎闈炴硶鐨勭郴緇熻皟鐢級銆傚浜庢柊鐨勫簲鐢ㄦ潵璇達紝涓轟簡閬垮厤涔﹀啓澶ч噺鐨凜OM寮鍙戜唬鐮侊紝鏈濂戒嬌鐢–++/CX榪涜寮鍙戜簡銆?/p>
涓轟粈涔堜細鏈塁++/CX鍛紵榪欏彲浠ヨ仈鎯硁騫村墠鎴戜滑涓轟簡閬垮厤C++寮鍙慍OM鐨勫啑闀跨殑浠g爜錛岃漿鑰屼嬌鐢–寮鍙戝叧閿▼搴忥紝鑰屼嬌鐢╒isual Basic鍒涘緩COM緇勪歡銆傜幇鍦ㄦ椂闂村埌浜?012騫達紝VB6宸茬粡涓嶅湪鑰冭檻鑼冨洿涔嬪唴浜嗭紝浜庢槸C++/CX鍙栦唬浜嗕粬鐨勪綅緗?/p>
C++/CX鏄疦ative鐨勶紝浣嗘槸瀹冪殑璇硶涓轟粈涔堣兘澶熷拰C++ CLI淇濇寔榪戜箮涓鑷村憿錛熻繖鏄洜涓篧in RT鏈韓铏界劧鏄疦ative鐨勶紝浣嗗畠浠?NET鍏煎鐨勬柟寮忔毚闇蹭簡鍏冩暟鎹備絾鏄垜浠湪緙栫▼涓鏃跺埢鎯沖埌錛屾垜浠湪鎿嶄綔瀹炴墦瀹炵殑Native瀵硅薄銆傛牴鏈病鏈変粈涔堝瀮鍦炬敹闆嗗櫒鍦ㄥ府鍔╂垜浠?/p>
閭d箞涓轟粈涔堜笉鍗曠函浣跨敤.NET寮鍙慚etro App鍛紵榪欐槸鍥犱負瀵逛簬縐誨姩璁懼鏉ヨ錛孋PU鐨勯熷害鍜岀數(shù)姹犳槸涓ゅぇ灞闄愶紝鍥犳鍦ㄨ繎涓騫達紝Go Native鐨勫ぇ娼粓浜庤鏉ャ傜洰鍓嶏細
錛?錛?nbsp; iOS浣跨敤Objective-C榪涜紼嬪簭寮鍙戯紝鑰屼笖鍦ㄧЩ鍔ㄨ澶囦笂涔熸槸娌℃湁鍨冨溇鏀墮泦鍣ㄧ殑錛岄渶瑕佹墜鍔ㄩ噴鏀句嬌鐢ㄧ殑鍐呭瓨錛?/p>
錛?錛?nbsp; Android涓寮濮嬩嬌鐢↗ava榪涜寮鍙戯紝浣嗘槸鍦ㄧ碂緋曠殑鎬ц兘鍜岀ぞ鍖虹殑寮哄ぇ鍘嬪姏涓嬶紝緇堜簬寮鏀句簡C/C++寮鍙戞帴鍙o紱
錛?錛?nbsp; WP7/8涔熷嚭鐜頒簡綾諱技Android鐨勬儏鍐點?/p>
鐩墠瀹㈡埛绔簲鐢ㄥ悜鏇磋杽錛堟牳蹇冨簲鐢ㄥ悜鏈嶅姟鍣ㄧЩ鍔級錛屾洿蹇紙榪愯閫熷害蹇紝鑰楃數(shù)灝忥級錛屼氦浜掓洿涓板瘜錛堟病鏈夊姩鐢諱綘閮藉涓嶈搗瑙備紬錛夌殑鏂瑰悜鍙戝睍銆傚洜姝ゅ紑鏀綨ative鎺ュ彛鏄ぇ鍔挎墍瓚嬶紝C/C++欏虹悊鎴愮珷鐨勫湪Windows 8寮哄娍鍥炲綊浜嗐?/p>
浣嗘槸錛岀敤.NET寮鍙慚etro搴旂敤涔熸槸涓涓笉閿欑殑閫夋嫨錛屽挨鍏朵綘鐨勫簲鐢ㄦ病鏈夊瘑闆嗙殑榪愮畻錛堟父鎴忥級鐨勬儏鍐典笅銆備綘鍙互鍙傝冨夠鐏墖涓殑Cheat Sheet銆?/p>