実行ファイルにあるフォルダの画像を読み出す

[戻る]
ふぁいふぁい 2002/12/18(水) 18:36:20
実行ファイル(.exe)を置いているフォルダに「bmp」というフォルダをつくり、その中に
「TestBmp.bmp」という画像ファイルを置いているのですが、これが読み出せません。
最初はパスを「C:\\.......\\TestBmp.bmp」というようにしていたのですが
この実行ファイル及び画像フォルダを別な場所に移動させても動くようにしなければ
ならないため、このようなパスの指定方法は使えません。
実行ファイルのパスを取得する方法、もしくは「実行ファイルと同じフォルダにある
特定のファイルをオープンする」といった関数はないものでしょうか?

sugar 2002/12/18(水) 18:46:53
こちらのトピックが類似していると思われます。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200212/02120075.txt

これで解決のヒントがつかめないでしょうか。

ふぁいふぁい 2002/12/18(水) 19:00:32
リンク先を参考にして、画像ファイルのパス指定を"bmp\\TestBmp.bmp"としたのですが
動きませんでした。実行ファイルから見た相対パスなので、始めに\\をつける必要は
ないようなのですが、指定方法間違っているでしょうか?

sugar 2002/12/18(水) 19:14:45
「ファイルを読み出す」時、どの関数でどのようにコーディングしてますか?
カレントディレクトリはどこを示してますか?

ひろひろ 2002/12/18(水) 23:27:04
割り込みで申し訳ないのですが、質問が似ている部分があるようですので
こちらで質問させてもらいます。
過去ログを参照していたら、カレントディレクトリのパスを取得するプログラムが
あったので、それを使ってカレントティレクトリを調べようと思い実装しました。

// カレントディレクトリ取得
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);

ここでpath[MAX_PATH]にカレントディレクトリのパスが格納されたと思い
CPaintDC dc(this);
dc.TextOut(0,0,path[MAX_PATH]);
としてパスを表示してもらおうとしたら「■」と出力されるだけで
パスを出力してくれませんでした。カレントディレクトリを調べるにはどのような
出力にすればいいのでしょう?

sugar 2002/12/18(水) 23:53:24
> dc.TextOut(0,0,path[MAX_PATH]);
>
これは文法的に間違ってますよね?
コンパイルの時にエラーかなんか出ませんか?

ひろひろ 2002/12/19(木) 00:04:49
あれ?間違ってますか?
エラーは何もでませんが・・・・
正しい表記はどのようなものなのでしょうか?

マップ 2002/12/19(木) 02:08:17
>ここでpath[MAX_PATH]にカレントディレクトリのパスが格納されたと思い
>CPaintDC dc(this);
>dc.TextOut(0,0,path[MAX_PATH]);
>としてパスを表示してもらおうとしたら「■」と出力されるだけで
>パスを出力してくれませんでした。カレントディレクトリを調べるにはどのような
>出力にすればいいのでしょう?

path[MAX_PATH]のMAX_PATHは記号定数なので
dc.TextOut(0,0,path[MAX_PATH]);
はpathのMAX_PATH文字目が出力されます。
だいたいの場合、MAX_PATH文字目はゴミが
入ってると思うので、「■」が
でたんじゃないでしょうか?

RAPT 2002/12/19(木) 02:20:19
こんばんは、RAPTです。

::GetModuleFileName() もあります。
これで、実行ファイルへのパスが取得できるので、あとは、切り貼りすれば
できるかと。

http://n76cd-01p05.ppp11.odn.ad.jp/log/07198.html
は参考にならないでしょうか。

Windows98/VC++6.0pro/SDK-may2002/ATL3.0/WTL7.0

dairygoods 2002/12/19(木) 11:35:12
> リンク先を参考にして、画像ファイルのパス指定を"bmp\\TestBmp.bmp"としたのですが
> 動きませんでした。実行ファイルから見た相対パスなので、始めに\\をつける必要は
> ないようなのですが、指定方法間違っているでしょうか?

"bmp\\TestBmp.bmp"は、カレントディレクトリからの相対になります。
カレントディレクトリと実行ファイルのあるディレクトリは、通常別です。

RAPTさんの仰るとおり ::GetModuleFileName() を使います。

古いスレッドには追加発言できません。