ページ 11

なぜかPNGが読み込めない

Posted: 2013年5月31日(金) 01:53
by missingno
またお世話になります。
現在龍神録の館をみながらプログラミングの勉強中なのですが1つ問題が発生して困っています。
Visual C++上でデバッグを行うとなぜかPNGファイルを読み込んでくれません(CSVファイルも)。
コーディングの問題かと思って簡単なプログラムを組んでみましたが結果は同じでした。
また、これまたなぜかデバッグ後に生成される実行ファイルを直接起動すると正常に画像が表示されます。
理由がわからなくてモヤモヤしていますので、どなたか助言をお願いします。
組んだプログラムは以下のようです

コード:

#include "DxLib.h"

void load(int t[3][256])
{
	LoadDivGraph("../img/bullet.png",256,16,16,16,16,t[0]);
	LoadDivGraph("../img/myship.png",24,8,3,32,48,t[1]);
	LoadDivGraph("../img/enemy.png",256,16,16,32,32,t[2]);
}


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
		ChangeWindowMode(TRUE);
        DxLib_Init();   // DXライブラリ初期化処理
		int graphic[3][256];
		load(graphic);
		DrawGraph(60,60,graphic[1][3],TRUE);
		DrawGraph(120,120,graphic[2][163],TRUE);
		DrawGraph(20,48,graphic[0][18],TRUE);
        WaitKey();      // キー入力待ち
        DxLib_End();    // DXライブラリ終了処理
        return 0;
}

Re: なぜかPNGが読み込めない

Posted: 2013年5月31日(金) 11:04
by softya(ソフト屋)
起動する状況により基準となるディレクトリが変わるからです。
exeから起動するとexeのあるディレクトリで、VC++から起動するとVC++のプロジェクトがあるディレクトリが基準となります。

Re: なぜかPNGが読み込めない

Posted: 2013年5月31日(金) 11:24
by usao
便乗質問みたいになってしまいますが,
exeのある場所のパスを得るのに,いつも

 GetModuleFileName() → exeのファイル名部分を取り除く

という手順を踏んでいるのですが,これ以上に簡単な(楽な?なんか一発で得るような)方法ってあるでしょうか?

Re: なぜかPNGが読み込めない

Posted: 2013年5月31日(金) 14:33
by softya(ソフト屋)
私もexeと同じ場所においてあるフォルダなどを得るためにGetModuleFileName()で得てますね。
カレントディレクトリはWin32APIなどで変化するので、これが確実だと思います。

Re: なぜかPNGが読み込めない

Posted: 2013年6月01日(土) 06:09
by missingno
ディレクトリの書き方がわるかったのですね、勉強し直します。