メインのWindowsフォーム(マネージC++)プロジェクトには、画像を表示または非表示にしてレスポンシブな図を作成するためのタイルが表示されるクラスがあります。外部から作成された.resxファイルからのリソースへのアクセス
私は私が正しい位置にすべての画像を得ることができます別のユーティリティアプリなどを作成したこのアプリは、C#で書かれており、次のコードスニペットを使用して、画像データと位置を含むの.resxファイルを書き込みされています
using(ResXResourceWriter resx = new ResXResourceWriter(sfd.FileName)) {
resx.AddResource("Size", canvas.Size);
List<int> IDs = canvas.IDs;
resx.AddResource("IDList", IDs);
resx.AddResource("BackgroundIndex", canvas.BackgroundIndex);
foreach(int id in IDs) {
String positionKey = String.Format("Position.id{0}", id);
String visibilityKey = String.Format("Visibility.id{0}", id);
String imageKey = String.Format("Image.id{0}", id);
resx.AddResource(imageKey, canvas.TileImage(id));
resx.AddResource(positionKey, canvas.TilePosition(id));
resx.AddResource(visibilityKey, canvas.TileVisible(id));
}
}
テキストエディタで.resxファイルを開き、整形式であり、期待されるデータが含まれていることがわかります。
次に、その.resxファイルをメインアプリケーションのプロジェクトに追加します。今、私はそれの中のリソースを取得する方法を把握することはできません。私が試したコードは次のとおりです。 見つけることができませんでした:障害が
リソース負荷:実行時に
ResourceManager^image_rm = gcnew ResourceManager( "resx_file_name_without_extension", GetType()->Assembly); ResourceSet^image_rs = image_rm->GetResourceSet( System::Globalization::CultureInfo::CurrentCulture, true, true);
、二行目(
GetResourceSet
コール)は、次のメッセージテキストでSystem.Resources.MissingManifestResourceException
をスローします指定された文化または中立文化に適したリソース。コンパイル時に "resx_file_name_without_extension.resources"が がアセンブリ "my_assembly"に正しく埋め込まれているか、またはリンクされていることを確認してください。または、 必要なすべてのサテライトアセンブリがロード可能で完全に署名されていることを確認してください。
私の問題は...疑いの余地があります。私は本当に分かりません。たぶん私はResourceManager
コンストラクタの正しい識別子を使用していないでしょう。私は明示的に "Build from Excluded from Build:No"と "Content:Yes"をファイルのプロパティに設定しようとしましたが、効果はありませんでした。
外部で作成した.resxファイルをプロジェクトにドロップして、その中のリソースにアクセスすることはできますか?私は間違いなくコンパイルする必要があります。私は迷惑な.resxファイルで製品を出荷することはできません。私は常に.cppファイル内に静的データオブジェクトのセットを作成できますが、.resxアプローチはよりエレガントに見えます...