実行ファイルにあるフォルダの画像を読み出す – プログラミング – Home

実行ファイルにあるフォルダの画像を読み...
 
通知
すべてクリア

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


ふぁいふぁい
 ふぁいふぁい
(@ふぁいふぁい)
ゲスト
結合: 22年前
投稿: 2
Topic starter  

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


引用解決済
トピックタグ
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

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

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


返信引用
ふぁいふぁい
 ふぁいふぁい
(@ふぁいふぁい)
ゲスト
結合: 22年前
投稿: 2
Topic starter  

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


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

「ファイルを読み出す」時、どの関数でどのようにコーディングしてますか?
カレントディレクトリはどこを示してますか?


返信引用
ひろひろ
 ひろひろ
(@ひろひろ)
ゲスト
結合: 22年前
投稿: 2
 

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

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

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


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

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


返信引用
ひろひろ
 ひろひろ
(@ひろひろ)
ゲスト
結合: 22年前
投稿: 2
 

あれ?間違ってますか?
エラーは何もでませんが・・・・
正しい表記はどのようなものなのでしょうか?


返信引用
マップ
 マップ
(@マップ)
ゲスト
結合: 22年前
投稿: 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
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 310
 

こんばんは、RAPTです。

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

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

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


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

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

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました