問題タブ [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.
microsoft-metro - C++/CX メトロ アプリで System.Xml.Linq を使用する
C++/CX メトロ アプリから System.Xml.Linq を使用できるかどうか知りたいです。Metro C# アプリは単純に System.Xml.Linq.dll を参照できますが (デフォルトでは参照されているようです)、C++/CX アプリには WinMD ファイルが必要であり、System.Xml のような獣を見つけることができません。 .Linq.
前もって感謝します。
sockets - Metro でのソケットの作成/破棄時のリークを処理する
Windows 8 Metro でネットワーク アプリケーションを作成しようとしています。私のアプリケーションは、実行時にある程度のソケットを作成/破棄する必要があります。WinRT のネットワーク API を調べようとしているときに、次の問題が見つかりました。プロセスがソケットを作成/破棄している間、ハンドル カウントが継続的に増加します。次のサンプルを書いたことを確認するには:
このタスクはメイン アプリのスレッドで作成されます。および に 2 つのブレークポイントを設定し、そこで Sysinternal の Handle ユーティリティを実行します。
チェックポイント 1 (create/destroy ループを開始する前):
チェックポイント 2 (ループ後):
これによると、私のアプリはタイマー、WaitCompletionPacket、およびその他のハンドルを継続的にリークしています。(私は、ループの後にしばらく待つか、ループに遅延を挿入して、ワーカーが作業を行うことを望んでいますが、何も助けにはなりませんでした)。では、このサンプルの何が問題なのですか? また、ソケット オブジェクトを作成/バインド/破棄する方法を教えてください。Windows 8 Consumer Preview、ビルド 8400 を使用しています。
textbox - C++/CX で Windows Metro スタイル アプリケーション用のテキスト ボックス コントロールを作成する方法は?
Metro スタイル アプリ用のテキスト ボックス コントロールを作成する必要があります。また、タブレット PC でアプリを実行するときに、このテキスト ボックスがタッチ キーボードを起動できるようにする必要があります。
マイクロソフトは私にアドバイスします:
カスタム テキスト コントロールを作成する場合 (Xaml であるかどうかに関係なく)、UI オートメーションの TextPattern と ValuePatterns をサポートし、変更されたイベントにフォーカスする必要があります。
と
ITextProvider と IValueProvider をサポートする AutomationPeer を提供する必要があります。
しかし、実際に何をする必要があるのか わかりません。どんな助けにも感謝します。
microsoft-metro - 別のパスからの文字列リソースのロード
Windows 8 C++ アプリで、プロジェクト/アプリ パッケージの一部ではない文字列リソース ファイルを読み込みたいです。これは可能ですか?
LoadPriFiles()
残念ながら、これは機能していません: (プロジェクト外のファイルには許可されていないことを読んだと思います)
c++ - std::shared_ptr の違いとタイプ^
C++/CX の shared_ptr と新しいハンドル表記 (^) の違いがよくわかりません。私が読んだことから、参照カウントとメモリ管理に関して同じことをしているようです。私は何が欠けていますか?
windows-8 - Platform::Collections::Map - 列挙型をキーとして使用
私は ac# dev として C++ に取り組もうとしており、いくつかのカスタム コントロールを作成しています。次の複雑な c# 辞書に相当する c++ が必要です
PinchscapeColor と PinchscapeColorLevel は単純な c# 列挙型です
そして、このような特定の色/色レベルの組み合わせを計算します(c#で)
C ++でこれを行う私の試みは、ある程度まで成功しました:
私の列挙型:
このようにヘッダーファイルにマップを定義しました
しかし、次のコンパイラエラーが発生します:
program files (x86)\microsoft visual studio 11.0\vc\include\collection.h(1118): エラー C3986: 'Invoke': パブリック メンバーの署名にネイティブ型 'std::less<_Ty>' が含まれています (最初の行です) 、それは永遠に続く)
誰かが私が間違っていることについて何か考えがありますか? 私はこれが簡単になるだろうと想像していました:(
編集
問題を再現するために必要なすべてのコードである最小限のコード例を以下に示します。
1) Class1.h
Class1.cpp
問題の再現に役立つことを願っています
これを整理するために時間を割いてくれた人に感謝します
c++ - Winrt / XAML / C ++:文字列値から色を取得
現在、C ++でいくつかのコンポーネントを記述していWinRT
ますが、Color文字列(「#FF448DCA」など)を取得して、Color
を構築するためにに変換する方法を理解する必要がありSolidColorBrush
ます。
WPF
私たちは持っていましたが、BrushConverter
私たちは同等のものを持っていないようですWinRT
文字列を分割したり、16進チャンクに変換したりすることでそれを行うことができますが、それは私の現在のスキルC#
を超えています。C++
私がそれを解決しようと多くの時間を費やす前に、誰かが迅速な答えを持っていますか(私のC ++は改善されますが、私の取引は苦しみます)
ありがとう
mstest - Metro 実行可能ファイルで定義されたクラスを単体テストする方法
VS11 RCを使用。C# 単体テスト ライブラリ (メトロ スタイル アプリ) プロジェクトでテストしようとしている C++ で記述されたクライアント実行可能ファイルがあります。テストは例外Class not registered HRESULT 0x80040154 (REGDB_E_CLASSNOTRG)で失敗します。これは、テスト プロジェクトの警告に関連していると思われます:実行可能ファイル 'Client.exe' は、winmd ファイル 'C:.Client.winmd' の実装として指定されています。アプリ マニフェストでの登録情報の生成では、インプロセス サーバーのみがサポートされています。アプリ マニフェストでアウトプロセス サーバーの登録情報を指定する必要があります。
MSTest はクラスを COM オブジェクトとして探しているように見えますが、警告はそれをアウトプロセス サーバーとして指定する必要があることを示しています。残念ながら、それは実行可能ファイルであるため、実行したくないと思います。それが必要な場合でも、方法がわかりません。
テスト中のクラスを別のプロジェクトに移動することもできますが、「これを機能させることができない」よりも良い理由なしにそれを行いたくありません。
Metro 実行可能ファイルで定義されたクラスを単体テストする方法はありますか?
xaml - CoreDispatcher.ProcessEvents()は間接的なクラッシュを引き起こしますか?
あらゆる場所でモーダルダイアログボックスを使用するレガシーコードをMetro/WinRTに移植する必要があります(C ++ / CXを使用)。これらのダイアログボックスは(を使用して)独自のメッセージループを提供するためDialogBoxParam()
、呼び出し元のコードは、ユーザーがメッセージボックスのボタンをクリックするまで待機します。
現在、XAMLとポップアップコントロールを使用する古いメッセージボックスクラスの代わりを作成しようとしています。同じ動作を再現するには、呼び出し元のスレッドで待機する必要がありますが、UIの応答性を維持する必要もあります。イベントの処理を継続するためにループで使用できることがわかりましたCoreDispatcher::ProcessEvents()
(これはあまり美しくないことはわかっていますが、すべてのレガシーコードを新しいスレッドモデルに変更したくありません)。ただし、アプリがクラッシュし続ける問題が発生しています。
問題を再現する最小限の例を次に示します(XAMLアプリを作成し、これをボタンに接続するだけです)。
これは、2つのボタンを使用してポップアップを開いたり閉じたりする最初の1〜2回の試行でうまく機能するようです。ただし、数回試行した後、Windows.UI.Xaml.dll
nullポインターを逆参照しようとすると、アプリケーションはすぐに深くクラッシュします。これをC#で再現することもできます(実質的に同じコードで)。
誰かがアイデアを持っていますか、ここで何が起こっているのですか?または、代替アプローチの提案ですか?
pointers - C ++ /CXWinRTポインターの参照カウントのスレッドセーフ
ユースケースを考えると、WinRTオブジェクトへの参照カウントはスレッドセーフであるという印象を受けました。しかし、他に説明する方法がわからないバグに遭遇しました。たとえば、次のコードはすぐにクラッシュします。
WinRTポインター(つまり、のようなrefクラスタイプC^
)は、読み取り/書き込みが競合しているときに適切に参照カウントされるはずですか?私が気付いていない別の問題があり、このクラッシュを引き起こしていますか?