早速ですが質問させていただきます。
タイトルの通りなのですが、ファイル名たとえば"test0.png"をリソースとして読み込んで、
その後、文字列"test0.png"から、割り当てられたIDを取得する方法はないでしょうか。
調べてみたところ、C#&javaに関しては割と関数が備わっているのですが、C++に関しては
出てきませんでした。
コードなしの質問で申し訳ありませんが、よろしくお願いします。
環境は
VS2010
windows7(64bit)
です。
よろしくお願いします。
C++ ファイル名からリソースのIDを取得したい
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: C++ ファイル名からリソースのIDを取得したい
やった事ないですが、そういう機能が必要な理由が分かりません。
わざわざリソースIDに抽象化しているのが無意味に成るような?
bonboさんは、リソースを何のために使われているんでしょうか?
【補足】リソースコンパイルした時に、元のファイル名の情報はロストしている気もします。
わざわざリソースIDに抽象化しているのが無意味に成るような?
bonboさんは、リソースを何のために使われているんでしょうか?
【補足】リソースコンパイルした時に、元のファイル名の情報はロストしている気もします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: C++ ファイル名からリソースのIDを取得したい
リソースのキー自体を,IDではなく"test.png"にしてしまえばよいのでは?
リソースのキーは,65535以下の正整数か文字列,どちらも使えます。
リソースのキーを文字列にするには,
.rcファイル上ではIDのかわりに"test.png"と書けばよいです。
IDE上でプロパティからIDを同様に二重引用符つきで記述すれば,文字列キーになります。
リソースのキーは,65535以下の正整数か文字列,どちらも使えます。
リソースのキーを文字列にするには,
.rcファイル上ではIDのかわりに"test.png"と書けばよいです。
IDE上でプロパティからIDを同様に二重引用符つきで記述すれば,文字列キーになります。
Re: C++ ファイル名からリソースのIDを取得したい
>soft屋さん
ありがとうございます。
>やった事ないですが、そういう機能が必要な理由が分かりません。
わざわざリソースIDに抽象化しているのが無意味に成るような?
目的は、関数の書き換えです。
今テクスチャを作る関数として、引数にファイル名が必要な関数を使っているのですが(D3DXCreateTextureFromFileExです)
それを引数にIDが必要な関数に書き換えようと思っているのです。 そして、今のコードのファイル名が入っているところをすべてIDに書き換えるというのは
あまりやりたくないので、ファイル名→リソースのIDと書き換えたいと思ったのです。
そうですね…もっといい方法があるかもしれません…
>YuOさん
ありがとうございます。
>リソースのキー自体を,IDではなく"test.png"にしてしまえばよいのでは?
つまり、 を とする、ということでしょうか。
一応やってみましたがだめでした…どこがおかしいのでしょうか
ありがとうございます。
>やった事ないですが、そういう機能が必要な理由が分かりません。
わざわざリソースIDに抽象化しているのが無意味に成るような?
目的は、関数の書き換えです。
今テクスチャを作る関数として、引数にファイル名が必要な関数を使っているのですが(D3DXCreateTextureFromFileExです)
それを引数にIDが必要な関数に書き換えようと思っているのです。 そして、今のコードのファイル名が入っているところをすべてIDに書き換えるというのは
あまりやりたくないので、ファイル名→リソースのIDと書き換えたいと思ったのです。
そうですね…もっといい方法があるかもしれません…
>YuOさん
ありがとうございます。
>リソースのキー自体を,IDではなく"test.png"にしてしまえばよいのでは?
つまり、 を とする、ということでしょうか。
一応やってみましたがだめでした…どこがおかしいのでしょうか
Re: C++ ファイル名からリソースのIDを取得したい
リソースはファイルではありません。
ファイルを対象とするAPIにリソースの名前を渡しても,扱うことはできません。
素直にLoadResourceしてD3DXCreateTextureFromFileInMemoryExを使う,というのではだめなのですか。
ファイルを対象とするAPIにリソースの名前を渡しても,扱うことはできません。
素直にLoadResourceしてD3DXCreateTextureFromFileInMemoryExを使う,というのではだめなのですか。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: C++ ファイル名からリソースのIDを取得したい
>とする、ということでしょうか。
>一応やってみましたがだめでした…どこがおかしいのでしょうか
肝心の情報がないですが、どうダメだったのでしょうか?
あとリソースはexeファイルに埋め込まれるのでファイル名が無くなる & exeと実行時メモリが肥大する って事自体を理解されているか心配になりました。
【補足】それと簡単に取り出せるのでファイルを隠している事には、これっポチもならない。って事も書いておきます。
便利なのはexeだけで動くという点だけです。
>一応やってみましたがだめでした…どこがおかしいのでしょうか
肝心の情報がないですが、どうダメだったのでしょうか?
あとリソースはexeファイルに埋め込まれるのでファイル名が無くなる & exeと実行時メモリが肥大する って事自体を理解されているか心配になりました。
【補足】それと簡単に取り出せるのでファイルを隠している事には、これっポチもならない。って事も書いておきます。
便利なのはexeだけで動くという点だけです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: C++ ファイル名からリソースのIDを取得したい
返信が遅れてしまい申し訳ありません。
>YuOさん、soft屋さん
ありがとうございます。
>肝心の情報がないですが、どうダメだったのでしょうか?
>戻り値のHRESULTは調べていますか。
すみませんでした。
戻り値は-2005529767
で失敗です。
>【補足】それと簡単に取り出せるのでファイルを隠している事には、これっポチもならない。って事も書いておきます。
便利なのはexeだけで動くという点だけです。
そうなんですか…ちょっと残念です…
でも、とりあえずできるまではやってみたいと思います。
>YuOさん、soft屋さん
ありがとうございます。
>肝心の情報がないですが、どうダメだったのでしょうか?
>戻り値のHRESULTは調べていますか。
すみませんでした。
戻り値は-2005529767
で失敗です。
>【補足】それと簡単に取り出せるのでファイルを隠している事には、これっポチもならない。って事も書いておきます。
便利なのはexeだけで動くという点だけです。
そうなんですか…ちょっと残念です…
でも、とりあえずできるまではやってみたいと思います。
Re: C++ ファイル名からリソースのIDを取得したい
返却値-2005529767が
D3DERR_NOTAVAILABLE このデバイスは、照会されたテクニックをサポートしていない。
D3DERR_OUTOFVIDEOMEMORY Microsoft® Direct3D® が処理を行うのに十分なディスプレイ メモリがない。
D3DERR_INVALIDCALL メソッドの呼び出しが無効である。たとえば、メソッドのパラメータに無効な値が設定されている場合などである。
D3DXERR_INVALIDDATA データが無効である。
E_OUTOFMEMORY Direct3D が呼び出しを完了するための十分なメモリを割り当てることができなかった。
のどれにあたるかの調べ方ってどうやるのでしょうか…
D3DERR_NOTAVAILABLE このデバイスは、照会されたテクニックをサポートしていない。
D3DERR_OUTOFVIDEOMEMORY Microsoft® Direct3D® が処理を行うのに十分なディスプレイ メモリがない。
D3DERR_INVALIDCALL メソッドの呼び出しが無効である。たとえば、メソッドのパラメータに無効な値が設定されている場合などである。
D3DXERR_INVALIDDATA データが無効である。
E_OUTOFMEMORY Direct3D が呼び出しを完了するための十分なメモリを割り当てることができなかった。
のどれにあたるかの調べ方ってどうやるのでしょうか…
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: C++ ファイル名からリソースのIDを取得したい
DirectX Error Lookupと言うツールがSDKに入っていますね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: C++ ファイル名からリソースのIDを取得したい
結局ファイル名からIDを取得する関数はなかったので
新たにリソースID用の読み込み関数とリソースID用の描画関数を作ることにしました。
(あとはプリプロセッサで場合分け)
ソフト設計の時点で気づけなかったのが問題なのだとおもいます。
これを教訓に以降失敗しないように心がけていこうと思います。
無理な質問をしてしまい申し訳ありませんでした。
新たにリソースID用の読み込み関数とリソースID用の描画関数を作ることにしました。
(あとはプリプロセッサで場合分け)
ソフト設計の時点で気づけなかったのが問題なのだとおもいます。
これを教訓に以降失敗しないように心がけていこうと思います。
無理な質問をしてしまい申し訳ありませんでした。