VisualStudio2010でリソースの読み込みについて
-
bonbo
VisualStudio2010でリソースの読み込みについて
先日質問して、解決したと思ったのですが、解決していませんでした。
内容は
http://dixq.net/forum/viewtopic.php?f=3&t=13013
と同じで、
リソースが読み込めないということについてですが。
VSのリソースビューから
"リソースの追加"→"新規作成"で作成したリソースは読み込めるということは分かったのですが、
その他の方法("リソースの追加"→"インポート"など)で作成したリソースを読み込ませることができません。
何がいけないのでしょうか。
分かりにくいので状況をアップロードしておきます。(2010June以降のDirectXSDKが必要となります。ご了承ください。)
http://www1.axfc.net/uploader/so/2896319
画像の読み込みは
DRAW_GRAPHIC.hの18行目から行っています。
環境は
Windows7(64bit)
DirectX2010June
です。
よろしくお願いします。
内容は
http://dixq.net/forum/viewtopic.php?f=3&t=13013
と同じで、
リソースが読み込めないということについてですが。
VSのリソースビューから
"リソースの追加"→"新規作成"で作成したリソースは読み込めるということは分かったのですが、
その他の方法("リソースの追加"→"インポート"など)で作成したリソースを読み込ませることができません。
何がいけないのでしょうか。
分かりにくいので状況をアップロードしておきます。(2010June以降のDirectXSDKが必要となります。ご了承ください。)
http://www1.axfc.net/uploader/so/2896319
画像の読み込みは
DRAW_GRAPHIC.hの18行目から行っています。
環境は
Windows7(64bit)
DirectX2010June
です。
よろしくお願いします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: VisualStudio2010でリソースの読み込みについて
読み込めないと言うのは、実行時エラーですか?
それなら、resource.rcのファイルパスが合っているか確認したほうが良いと思います。
IDB_PNG1等がフルパスになっているので大丈夫か気になります。
それなら、resource.rcのファイルパスが合っているか確認したほうが良いと思います。
IDB_PNG1等がフルパスになっているので大丈夫か気になります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
bonbo
Re: VisualStudio2010でリソースの読み込みについて
>soft屋さん
ありがとうございます。
>読み込めないと言うのは、実行時エラーですか?
そうです。テクスチャ(スプライトでしたっけ…)を作成した時に
返される値がNULLなのです。
>それなら、resource.rcのファイルパスが合っているか確認したほうが良いと思います。
IDB_PNG1等がフルパスになっているので大丈夫か気になります。
たしか、フルパスだと日本語が入ってしまってだめになるケースがあるのですよね。
それならパスはすべて英語なので大丈夫だと思うのですが、
一応、
C:\Users\Administrator.user-PC\Documents\Visual Studio 2010\Projects\spreiteExpandTest\spritetest\test0.png
です。
プロジェクト直下でインポートし、パスを直しました(test0.pngにした)が、だめでした…
ありがとうございます。
>読み込めないと言うのは、実行時エラーですか?
そうです。テクスチャ(スプライトでしたっけ…)を作成した時に
返される値がNULLなのです。
>それなら、resource.rcのファイルパスが合っているか確認したほうが良いと思います。
IDB_PNG1等がフルパスになっているので大丈夫か気になります。
たしか、フルパスだと日本語が入ってしまってだめになるケースがあるのですよね。
それならパスはすべて英語なので大丈夫だと思うのですが、
一応、
C:\Users\Administrator.user-PC\Documents\Visual Studio 2010\Projects\spreiteExpandTest\spritetest\test0.png
です。
プロジェクト直下でインポートし、パスを直しました(test0.pngにした)が、だめでした…
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: VisualStudio2010でリソースの読み込みについて
フルパスを止めてみては? フルパス以外は読み込めているんですよね?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
bonbo
Re: VisualStudio2010でリソースの読み込みについて
>soft屋さん
ありがとうございます。
>フルパスを止めてみては? フルパス以外は読み込めているんですよね?
毎度素人ですみません…もしかするとまた勘違いしてるかもしれないのですが、フルパスというのは
C:\Users\Administrator.user-PC\Documents\Visual Studio 2010\Projects\spreiteExpandTest\spritetest\test0.png
みたいな長いパスのことであってるしょうか。
読み込めているbitmap1.bmpと同じディレクトリに入れて、インポートするとリソースビューのfilenameの所のパスがtest0.pngとなる、
のですが、これでも読み込めません。
まだどこかおかしいみたいです…
ありがとうございます。
>フルパスを止めてみては? フルパス以外は読み込めているんですよね?
毎度素人ですみません…もしかするとまた勘違いしてるかもしれないのですが、フルパスというのは
C:\Users\Administrator.user-PC\Documents\Visual Studio 2010\Projects\spreiteExpandTest\spritetest\test0.png
みたいな長いパスのことであってるしょうか。
読み込めているbitmap1.bmpと同じディレクトリに入れて、インポートするとリソースビューのfilenameの所のパスがtest0.pngとなる、
のですが、これでも読み込めません。
まだどこかおかしいみたいです…
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: VisualStudio2010でリソースの読み込みについて
pngが読み込めないんですね?
これが参考になりますか?
「ゲームつくろ~質問箱 [One Topic All View / Re[4]: D3DXCreateTextureFromResource関数でpngファイルを読み込みたい / Page: 0]」
http://marupeke296.com/cgi-bin/cbbs/cbb ... P=R&KLOG=1
これが参考になりますか?
「ゲームつくろ~質問箱 [One Topic All View / Re[4]: D3DXCreateTextureFromResource関数でpngファイルを読み込みたい / Page: 0]」
http://marupeke296.com/cgi-bin/cbbs/cbb ... P=R&KLOG=1
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
bonbo
Re: VisualStudio2010でリソースの読み込みについて
>これが参考になりますか?
「ゲームつくろ~質問箱 [One Topic All View / Re[4]: D3DXCreateTextureFromResource関数でpngファイルを読み込みたい / Page: 0]」
http://marupeke296.com/cgi-bin/cbbs/cbb ... P=R&KLOG=1
読ませていただきました。
全く同じ状況なのですが、
最後に
"リソースエディタで作ったリソースファイルを開けていろいろ試した結果、
リソースファイルにヘッダをつけていないという、なんとも初歩的なミスでした。"
となっているところで投げられてしまっていて、そこがよくわかりません。
2003や2005のVSはどうだったか知りませんが(もうExpress版しか手に入りませんし)、今はリソースファイルには自動的にresource.hがインクルードされるので..
リソースファイルにヘッダをつけるというのは…いったいどのヘッダなのでしょう…
"Windows XPまでのデスクトップへのフルパスは「C:\Documents and Settings\IKD\デスクトップ\***」と日本語パスが入ります。"
これは大丈夫だと思うのですが。
以下resource.h
以下resource.rc
アップロードしたファイルと同じものですが、一応。
「ゲームつくろ~質問箱 [One Topic All View / Re[4]: D3DXCreateTextureFromResource関数でpngファイルを読み込みたい / Page: 0]」
http://marupeke296.com/cgi-bin/cbbs/cbb ... P=R&KLOG=1
読ませていただきました。
全く同じ状況なのですが、
最後に
"リソースエディタで作ったリソースファイルを開けていろいろ試した結果、
リソースファイルにヘッダをつけていないという、なんとも初歩的なミスでした。"
となっているところで投げられてしまっていて、そこがよくわかりません。
2003や2005のVSはどうだったか知りませんが(もうExpress版しか手に入りませんし)、今はリソースファイルには自動的にresource.hがインクルードされるので..
リソースファイルにヘッダをつけるというのは…いったいどのヘッダなのでしょう…
"Windows XPまでのデスクトップへのフルパスは「C:\Documents and Settings\IKD\デスクトップ\***」と日本語パスが入ります。"
これは大丈夫だと思うのですが。
以下resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by resource.rc
//
#define IDB_BITMAP1 103
#define IDB_PNG5 109
#define IDB_PNG1 114
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 115
#define _APS_NEXT_COMMAND_VALUE 40002
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// 日本語 (日本) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
IDB_BITMAP1 BITMAP "bitmap1.bmp"
/////////////////////////////////////////////////////////////////////////////
//
// PNG
//
IDB_PNG1 PNG "test0.png"
#endif // 日本語 (日本) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: VisualStudio2010でリソースの読み込みについて
resource.hは合っていると思います。
ポイントは引用サイトのこちらだと思います。
ポイントは引用サイトのこちらだと思います。
続いて.rcファイル(リソースファイル)に次の記述を追加します:
〔MyResource.rc〕
ID_TESTPNG RCDATA DISCARDABLE "Test.png"
ここで指定したPNGファイルをプロジェクトの直下に置きます。もし画像をフォルダにまとめたいのであれば、上のパス指定を例えば「pict/Test.png」などのように変更して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
bonbo
Re: VisualStudio2010でリソースの読み込みについて
できました。
ありがとうございます。
>ポイントは引用サイトのこちらだと思います。
まさにその通りでした。ありがとうございます。
あとで見た人のために
一連の動作をまとめておきたいと思います。
・リソースにpngファイルを追加する方法。VS2010(Express版だとリソースファイルが作成できないのでpro限定でのやり方になりますが…)
基本的にはsoft屋さんが紹介してくださったhttp://marupeke296.com/cgi-bin/cbbs/cbb
と同じような感じですが、
1.リソースの作成
ソリューションエクスプローラを右クリック→追加→新しい項目→リソースファイル。名前はresource.rcにします。
resource.rcが作成され、自動的にresource.hも作成される。(作成されなければresource.hを作る。)
resource.rcに の記述の追加(VS2010なら最初から追加されているはず。)
2.プロジェクトに読み込みたいpngファイルを入れる(その際パスに日本語が入るとまずい)。
ドラッグアンドドロップでもできるが、
リソースビュー→resource.rcを右クリック→リソースの追加→出てきたウィンドウのインポートをクリック
→読み込むファイルを選択。OKで追加
3.resource.rcを書き換える
ソリューションエクスプローラのresource.rcを右クリック→ソースの表示 をするとresource.rcの内容が見られる。
resource.rcのなかで
のようになっている箇所があるはず(IDB_PNG1はファイルのID。名前は違うかもしれない。と"test0.png"は読み込んだ画像の名前)
その下に以下の記述を追加 すると、リソースビューにRC_DATAファイルとカスタムデータが作成されて
"test0.png"が読み込めるようになる。
分かりにくい…もっと簡単な方法があるかもしれません。
VS2012についてはわかりません。
soft屋さん何度もありがとうございました。
ありがとうございます。
>ポイントは引用サイトのこちらだと思います。
まさにその通りでした。ありがとうございます。
あとで見た人のために
一連の動作をまとめておきたいと思います。
・リソースにpngファイルを追加する方法。VS2010(Express版だとリソースファイルが作成できないのでpro限定でのやり方になりますが…)
基本的にはsoft屋さんが紹介してくださったhttp://marupeke296.com/cgi-bin/cbbs/cbb
と同じような感じですが、
1.リソースの作成
ソリューションエクスプローラを右クリック→追加→新しい項目→リソースファイル。名前はresource.rcにします。
resource.rcが作成され、自動的にresource.hも作成される。(作成されなければresource.hを作る。)
resource.rcに の記述の追加(VS2010なら最初から追加されているはず。)
2.プロジェクトに読み込みたいpngファイルを入れる(その際パスに日本語が入るとまずい)。
ドラッグアンドドロップでもできるが、
リソースビュー→resource.rcを右クリック→リソースの追加→出てきたウィンドウのインポートをクリック
→読み込むファイルを選択。OKで追加
3.resource.rcを書き換える
ソリューションエクスプローラのresource.rcを右クリック→ソースの表示 をするとresource.rcの内容が見られる。
resource.rcのなかで
のようになっている箇所があるはず(IDB_PNG1はファイルのID。名前は違うかもしれない。と"test0.png"は読み込んだ画像の名前)
その下に以下の記述を追加 すると、リソースビューにRC_DATAファイルとカスタムデータが作成されて
"test0.png"が読み込めるようになる。
分かりにくい…もっと簡単な方法があるかもしれません。
VS2012についてはわかりません。
soft屋さん何度もありがとうございました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: VisualStudio2010でリソースの読み込みについて
ちなみに、リソースは手で書けばExpressでも利用可能です。bonbo さんが書きました:解決忘れてました。すみません。
ResEditと言うフリーソフトもあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。