問題タブ [c++-cx]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Winrt C++ - ヘッダー ファイルに使用する名前空間を含めますか?
重複の可能性:
C++ ヘッダーの「名前空間の使用」
私は WPF の世界では ac# 開発者ですが、Winrt 開発はすべて C++ で行うことにしました。
私が混乱していることの 1 つは、(using
完全修飾型名を入力するのではなく) ヘッダー ファイルでステートメントを使用する (または使用しない) ことです。
using
ヘッダーファイルにステートメントを含める方がはるかに簡単です。Microsoft Winrt のサンプルの多くにはusing
、ヘッダーにステートメントが含まれているため、コードが明確で読みやすくなっています。しかし、私は John Petzold の新しい本のプレビューで c++ のサンプルを見てきましたusing
。
私は賛否両論を理解していません。グーグルで検索すると、反対意見がたくさん出てきます。
この問題はWinrtの世界に関連しているため、誰かが私にこの問題の決定的な説明をしてもらえますか(私は他の環境でのc ++には興味がありません)
ありがとう
windows-8 - ビジュアル ツリーの一部でない場合、キャンバスには親がありませんか?
Windows 8 Metro 用のアプリを作成していますが、Canvas の親子関係がどのように機能するかを理解するのに問題があります。あるキャンバスを別のキャンバスの子に追加すると、親キャンバスがビジュアル ツリーに追加されるまで、サブキャンバスの ->parent プロパティが null に等しいようです。以下は、問題を示すサンプル コードです。
また、VisualTreeHelper を使用して親を取得しようとしました。
動作はそのままです。theParent は、testCanvas がビジュアル ツリーに追加される前は null であり、testCanvas がビジュアル ツリーに追加された後は null ではありません。
これがバグでない場合、親がビジュアル ツリーの一部にならずにサブキャンバスの親を取得する方法を誰か教えてもらえますか? バグの場合、既知の回避策はありますか? ありがとうございました!
c# - 1 つのプロジェクト コードで「XAML 経由の C#」と「XAML 経由の C++/CX」を使用する
WinRT コード「C# via XAML」と「C++/CX via XAML」を 1 つのアプリケーションで使用したいと考えています。
最初の形式は「C# via XAML」で記述され、2 番目の形式は「C++/CX via XAML」で記述されます。
次のコードでフォームを開きます。
と
1 つのプロジェクトでこれらの両方を行うにはどうすればよいですか?
windows-8 - [Windows::Foundation::Metadata::WebHostHidden] がカスタム WinRT C++/CX コントロールに既定で追加されるのはなぜですか?
WinRT C++/CX プロジェクトで新しいコントロールを作成すると、[Windows::Foundation::Metadata::WebHostHidden]
Visual Studio 2012 によって既定で class 属性が追加されます。
例:
- これについて文書化された理由はありますか?(私は宿題をしましたが、この情報を見つけることができませんでした)
- 私の知る限り、この属性
[WebHostHidden]
を使用すると、WinRT HTML/Javascript プロジェクトでクラスが見えなくなります。これは、Javascript で使用できる C++/CX でコントロールを作成できないということですか?
c++ - create_task と戻り値
宣言したメソッド内で Async メソッドを呼び出す必要があります。メソッドは値を返す必要があります。Windows ストアへの呼び出しを使いやすいクラスにラップしようとしています。私の方法は次のようになります。
enum_InAppOption
購入するすべてのアプリ内オプションで構成される列挙型です。ある時点で、 に電話する必要がありますRequestProductPurchaseAsync
。この呼び出しの結果によって、メソッドが を返すtrue
かを返すかが決まりfalse
ます。私は c++/cx を初めて使用します (または少なくとも、現在から最後に c++ を使用するまでの間に長い歴史があります)。
は次のcreate_task
ようになります。
私が検討/試したオプション:
タスクを返すと、ストアが抽象化されません
タスクで待機を呼び出そうとしました。私は例外を持っています
An invalid parameter was passed to a function that considers invalid parameters fatal.
使用しようとしまし
structured_task_group
たが、これは非 void を返すメソッドを許可していないようです。または、間違った解釈を提供しようとしています。コンパイラはエラー C2064 を返します (ググっても何を変更すればよいかわかりません)タスクの配列を使用して、
when_all
http://msdn.microsoft.com/en-us/library/dd492427.aspx#when_allで、ページの中央に次のコードが見つかりました。
だから私はそれを次のコードに翻訳しようとしました:
コンパイラを含めたにもかかわらず、C2065 ('array': 宣言されていない識別子)、C2275 ('Concurrency::task<_ReturnType>': 式としてのこの型の不正な使用、およびこれら 2 つに続くエラーと思われるいくつかのエラーがスローされます。 .
要約すると、非同期タスクが完了した後にメソッドを返す方法を教えてください。これにより、非同期で行われている処理に基づいて意味のある結果を返すことができます。
microsoft-metro - ARM プラットフォーム用の Metro スタイル アプリで x86 または x64 ライブラリを使用する
メトロ アプリで古い C++ ライブラリを使用したいと考えています。このライブラリは、x86 または x64 としてビルドできます。基本的に私が考えていたのは、このライブラリの C++/CX ラッパーを作成することでした。
ただし、Visual Studio では、ラッパー プロジェクトで使用できるプラットフォームは Win32、ARM、および x64 であることがわかります。Win32 および x64 プラットフォームでは問題なく動作すると思いますが、ARM プラットフォーム用にビルドするときにライブラリを使用できますか?
c++ - platform::string Windows 8/RT C++ の関数
重複の可能性:
Platform::String はちょっと役に立たない
私は Windows 開発に不慣れで、新しい Visual C++ API に夢中になっています。最近、文字列関数が不足しているように見えます。次のような基本的な機能はありますか?
- 部分文字列
- strpos または類似の
- 正規表現
私の最終的な目標は、「C:\foo\bar\baz.jpg」などのファイル パスを取得し、最も深いディレクトリを抽出することです。この例では、「bar」を探しています。
おそらくより大きな懸念事項として、Win 8 API の最新のドキュメントを見つけるのが非常に困難であることを発見しました。このような質問を探すのに最適な場所はどこですか?
c++ - プロパティ通知の変更 C++/CX バインディングで同等のものに変更
C# では、関数呼び出しの結果を返すプロパティ ゲッターをよく作成しました。つまり、OnPropertyChanged を使用して手動でプロパティ変更通知をトリガーする必要がありました。このプロセスは C# と VB について十分に文書化されていますが、C++/CX に相当するものを見つけることができないようです。そのようなものは存在しますか、それとも新しいプログラミング パターンを見つける必要がありますか?
私の問題を示す基本的な例を次に示します。
windows - Windows RT/8 で弱参照をインスタンス変数として使用できますか?
プロジェクトの 1 つでツリーを実装しています。各ノードには、0 個以上の子ノードを持つベクトルが含まれています。各ノードには、その親への参照も含まれています (ルートの親参照は nullptr です)。クラス定義の例を次に示します。
まず、これによりメモリリークが発生しますか? これらは両方向の強い参照であると想定しているため、オブジェクトの参照カウントはゼロを超えたままになります。
Platform::WeakReference の例を見たことはありますが、インスタンス変数として見たことはありません。これは可能ですか?構文はどのようになりますか?
xaml - 任意のCPUを対象とするWindowsストアソリューションにC++/CXライブラリを追加する方法
そのため、任意のCPUをターゲットとするC#を使用するWindowsストアアプリがあり、単一のアプリが任意のWindows 8 x86/x64デスクトップ/タブレットまたはARMタブレットで実行されます。AnyCPUをターゲットにするオプションがないように見えるC++でいくつかの特別なコードを追加する必要があります。コードはx86/x64の両方でコンパイルおよび実行され、ソリューション全体をARMに変更すると、そこでもコンパイルおよび実行されます。だから私はC++をターゲットにする方法を探しています。おそらく不可能だと思うCPUを探しています。または、C ++ライブラリを複数回コンパイルして(x86、x64、およびARM)、それらすべてをappxパッケージに含めます。私はC++/CXでWindowsStore開発ドキュメントを読むのに約3時間費やしましたが、これを行う方法はまだ見つかりませんでした。もちろん私は探し続けますが、他の誰かがこれを行う方法を見て、正しい方向に私を向けることができることを望んでいます。