実行ファイル(.exe)を置いているフォルダに「bmp」というフォルダをつくり、その中に
「TestBmp.bmp」という画像ファイルを置いているのですが、これが読み出せません。
最初はパスを「C:\\.......\\TestBmp.bmp」というようにしていたのですが
この実行ファイル及び画像フォルダを別な場所に移動させても動くようにしなければ
ならないため、このようなパスの指定方法は使えません。
実行ファイルのパスを取得する方法、もしくは「実行ファイルと同じフォルダにある
特定のファイルをオープンする」といった関数はないものでしょうか?
こちらのトピックが類似していると思われます。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200212/02120075.txt
これで解決のヒントがつかめないでしょうか。
リンク先を参考にして、画像ファイルのパス指定をbmp\\TestBmp.bmpとしたのですが
動きませんでした。実行ファイルから見た相対パスなので、始めに\\をつける必要は
ないようなのですが、指定方法間違っているでしょうか?
「ファイルを読み出す」時、どの関数でどのようにコーディングしてますか?
カレントディレクトリはどこを示してますか?
割り込みで申し訳ないのですが、質問が似ている部分があるようですので
こちらで質問させてもらいます。
過去ログを参照していたら、カレントディレクトリのパスを取得するプログラムが
あったので、それを使ってカレントティレクトリを調べようと思い実装しました。
// カレントディレクトリ取得
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
ここでpath[MAX_PATH]にカレントディレクトリのパスが格納されたと思い
CPaintDC dc(this);
dc.TextOut(0,0,path[MAX_PATH]);
としてパスを表示してもらおうとしたら「■」と出力されるだけで
パスを出力してくれませんでした。カレントディレクトリを調べるにはどのような
出力にすればいいのでしょう?
> dc.TextOut(0,0,path[MAX_PATH]);
>
これは文法的に間違ってますよね?
コンパイルの時にエラーかなんか出ませんか?
あれ?間違ってますか?
エラーは何もでませんが・・・・
正しい表記はどのようなものなのでしょうか?
>ここで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です。
::GetModuleFileName() もあります。
これで、実行ファイルへのパスが取得できるので、あとは、切り貼りすれば
できるかと。
http://n76cd-01p05.ppp11.odn.ad.jp/log/07198.html
は参考にならないでしょうか。
Windows98/VC++6.0pro/SDK-may2002/ATL3.0/WTL7.0
> リンク先を参考にして、画像ファイルのパス指定をbmp\\TestBmp.bmpとしたのですが
> 動きませんでした。実行ファイルから見た相対パスなので、始めに\\をつける必要は
> ないようなのですが、指定方法間違っているでしょうか?
bmp\\TestBmp.bmpは、カレントディレクトリからの相対になります。
カレントディレクトリと実行ファイルのあるディレクトリは、通常別です。
RAPTさんの仰るとおり ::GetModuleFileName() を使います。