14

ここに画像の説明を入力

この絵はよくわかりません。Metro スタイル アプリでは、C/C++ は何を意味しますか? ネイティブ C/C++? それともマネージドC ++ですか?彼ら(Metro スタイルのアプリ)には Win32 レイヤーさえありません!

Metro スタイルとデスクトップの両方と互換性のあるアプリケーションを作成するには、.NET コードのみを使用する必要がありますか? 古いネイティブ アプリケーションは Windows8 タブレットで実行できますか?

4

5 に答える 5

15

はい、C/C++/Win32 で記述されたアンマネージド ネイティブ アプリや .NET でマネージド アプリを含む古いアプリは、Windows 8 タブレットで正常に動作します。もちろん、タブレットが ARM プロセッサを実行している場合は除きます。その場合、新しい Metro スタイル アプリ (および特に ARM をターゲットとするアプリ) のみがサポートされます。

この図では、C/C++ は WinRT API にあるアンマネージド ネイティブ アプリを意味し、これもアンマネージド ネイティブです。C# または VB.NET を使用したい場合は、.NET とシームレスに統合されます。

最後の質問ですが、Metro スタイルとデスクトップの両方と互換性のあるアプリケーションを作成することはできません...それらは相互に排他的であり、どちらかを選択する必要があります。

于 2011-09-15T06:16:10.360 に答える
5

WinRT はネイティブ コードであり、C/C++ はネイティブですが、WinRT で使用する場合の構文は C++/CLI のように見えます。私が聞いたところによると、C ではなく C++ 向けに設計された API のようで、非常にオブジェクト指向であり、人々はかなり興奮しているようです。

C# は、COM Interop の通常の方法を使用して WinRT を使用します。

このディスカッションから Andy Rich (MSFT) を引用するには:

コア WinRT は管理されていません。ネイティブで COM ベースです。私たちの言語は、高レベルの構文で完全にネイティブなプロジェクションを提供しますが、その構文に縛られることはありません。低レベルの COM または WRL (ATL に似たテンプレート ライブラリ) を使用して Windows ランタイムをターゲットにすることができます。 ) 同じように。(C#/VB プロジェクションは別の話です。.NET と WinRT の間でマーシャリングするランタイム呼び出し可能なラッパー オブジェクトを生成します)。

于 2011-09-15T06:14:06.557 に答える
4

Metro アプリの C++ はネイティブ C++ です。C++/CLI によく似た新しい言語拡張機能を使用することをお勧めします。これは、C++/CLI によく似ており、同様に高レベルのエクスペリエンスを提供します。たとえば、オブジェクトや文字列の参照カウント、または実装と呼び出しを手動で処理する必要はありませんQueryInterfaceが、純粋にネイティブコード。ただし、それを行う必要はありません。

いずれにせよ、独自のクラスについては、バニラ C++ で定義し、ライブラリにコンパイルできます。このようにして、アプリのデスクトップ バージョン (MFC、Win32、Qt などを使用して UI を実装) と Metro バージョン (WinRT API を使用して UI を実装) の間でロジックを共有できます。同様に、.NET アプリの場合、デスクトップと Metro の間で再利用されるクラス ライブラリにロジックを分離できます。

C++ でも .NET でも、同じ UI レイヤーで両方で実行される単一のアプリを作成する方法はありません。一方、WinRT API を使用せず、HTML5 標準に固執する場合は、HTML/JS である程度近似できます。その後、ブラウザーでホストすることで「デスクトップ バージョン」を作成できます。

于 2011-09-15T07:45:45.520 に答える
2

私はプロのソフトウェア開発者であり、主にエンタープライズ Web ベースのアプリケーションを作成していますが、Visual Studio 2012 と Windows 8 をいじってみました。

Metro は禁止された用語であるため、フルスクリーン アプリを指す場合は「タブレット アプリ」という用語を使用し、Windows デスクトップで実行されるプログラムを指す場合は「デスクトップ アプリ」という用語を使用します。

この絵はよくわかりません。Metro スタイル アプリでは、C/C++ は何を意味しますか? ネイティブ C/C++? それともマネージドC ++ですか?彼ら(Metro スタイルのアプリ)には Win32 レイヤーさえありません!

すべてのタブレット アプリはマネージド コードを使用します。これは、WinRT オペレーティング システムが x86 または AM64 命令を実行できないためです。ただし、どちらのバージョンでも .Net コードを問題なく実行できます。そのため、すべての WinRT アプリはマネージ コードを使用し、XAML UI を使用する必要があり、Windows ストアを通じてのみ配布されます。

Metro スタイルとデスクトップの両方と互換性のあるアプリケーションを作成するには、.NET コードのみを使用する必要がありますか?

はい。その通りです。.Net コードを使用する必要があります。古いネイティブ アプリは、Windows 8 タブレットでは実行できません。あなたが実際にやって学んだほとんどの Windows 開発者のようであれば、コードの書き方を調整する必要があります。

これが私がそれに近づいている方法です:

さまざまなフォーム ファクター (タブレット、デスクトップ、電話) で動作する必要がある基本的なプログラムには、3 つのクラスがあります。Model クラスと Controller クラスは、GUI イベントとメソッドを定義する Interface ファイルとともに DLL に実装されます。実際に私の .EXE ファイルに入るものは GUI だけです。また、GUI の唯一のロジックは、基本的に、ユーザーがフォーム上でプログラムに何かを実行させる必要があるアクションを実行したときにイベントを発生させることです。

たとえば、ユーザーはテキスト フィールドに自分の名前を入力し、[送信] をクリックします。これにより、[名前] ボックスの値をパラメーターとして使用して Submitted イベントが発生します。コントローラーは、UpdateStatus() などのメソッドを使用してフォームにフィードバックを返すことができます。

複雑に聞こえますが、より事前の設計が必要です。このシステムの優れた点は、1 つのフォーム ファクター用にプログラムを実装したら、他のフォーム ファクター用に XAML を変更するだけでよいことです。コントローラーとモデルはまったく変更されません。(誰かが XAML テンプレートを使用してこれを行う方法を指摘すると確信していますが、私はまだそこにいません。)

于 2012-11-07T23:57:02.443 に答える
1

Windows 7 と同様に、64 ビット Windows は古い 16 ビット アプリをサポートしていません。それ以外は、はい、ネイティブ アプリがサポートされています。

于 2011-09-15T06:11:59.637 に答える