ページ

2009年10月14日水曜日

[WindowsCE][Silverlight] Windows Embedded CE 6.0 R3 の Silverlight for Windows Embedded って Silverlight なの?

前に書いた 「[WindowsCE][Silverlight] Windows Embedded CE 6.0 R3 が RTM。そしてこいつには Silverlight が入ってる」 で Windows Enbedded に Silverlight for Windows Embedded なるものが入っていると紹介しましたが...
その記事でも 「MonoTouch みたいにネイティブコードにコンパイルしてから動かすということは無いんじゃないかと思ってるんですがどうなんでしょ」 とか書いたんですが...

InfoQ: 「Windows Embedded CE向けSilverlightは本当のSilverlightではない

ネイティブコードにコンパイルどころか、初めからネイティブな C++ しかサポートされないそうです。
また、Silverlight for Windows Embedded は完全に新しい API セットだそうです。
えーと、これのどこが Silverlight ?

Silverlight for Embedded tutorial
こちらに Silverlight for Windows Embedded のコード作成例が紹介されています。
最初に簡単な XAML を Expression Blend 2 で作成。
Blend は C# と VB にしか対応していないのでソースコードを作成しちゃダメとのこと。イベントハンドラなんかが作成されないようにオプションの Visual Studio との統合をオフにしちゃえだそうです。
続いて Platform Builder で Win32 アプリケーションプロジェクトを作成して、プロジェクトにリソースを追加、リソースにカスタムリソースとしてさっき作った XAML ファイルをインポート、という手順で XAML ファイルをとりこんでいます。
あとはコードを書けば OK。
記事に載っているコード例を見ればわかりますが、IXRApplication やら IXRVisualHost やら IXRFrameworkElement やらといったバリバリの COM の世界です。イベントハンドラの戻り値も HRESULT だし。デリゲートもメンバ関数ポインタを渡して作るんですね。(デリゲートも COM なので、使い終わった後に Release() してやらないといけないのがなんとも)

うーん、確かにインターフェースは似せてあるようなので、COM バージョンの Silverlight だと言われればそんなような気もしますが...
けど、それって Silverlight なの?
少なくとも 「C# や VB で Silverlight アプリを作れます」 と言う人が C++ や COM の知識無しに Silverlight for Windows Embedded に手を出すと大変な目にあいそう。
CE 上のアプリをネイティブ C++ で書いていたような人にとっては 「COM ベースの UI フレームワークが増えただけ」 と言う感じなのかな?


0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。