dポイントプレゼントキャンペーン実施中!

お世話になっております。
VC2005を使用しております。
CImageを使用して任意のファイル名で保存したいのですが。
CImage SaveImage;
CString ss;
ss="1111.jpg";
SaveImage.Save(filename); ----(1)
SaveImage.Save("1111.jpg"); ----(2)
(2)のように直接ファイル名を書き込むと正常に保存できますが、
(1)のように間接的に書き込むと正常に保存できません。
どのようにすれば(1)のような方法で保存できるのでしょうか?
教えていただけないでしょうか?
よろしくお願いします。

A 回答 (3件)

★覚えていますか?


・前回 Unicode 文字列でないといけないと書きましたけど。
 Save メソッドは Unicode の文字列でないといけないようです。
>SaveImage.Save("1111.jpg"); ----(2)
 ↑
 これは VC2005 の文字列リテラルのデフォルトが Unicode に設定されています。
 なので直接文字列で指定すると保存されるのです。
>SaveImage.Save(filename); ----(1)
 ↑
 これは CString クラスですよね。
 CString filename = TEXT( "1111.jpg" );
 とすれば出来ませんか?
 http://msdn2.microsoft.com/ja-jp/library/8a994df …
 
・普段 CString 型はあまり利用した事がないので良くは分かりませんが
 上記のリンクより CString 型でも ワイド文字(Unicode)が扱えるみたいですね。
 マルチバイトの文字列は必ずワイド文字(Unicode)に変換してから Save メソッドに
 渡して下さい。
・以上。
    • good
    • 1
この回答へのお礼

前回に引き続きありがとうございます。
Cimageを使用してできるようになりました。ちょっと前進できました。
その方法で確認させていただきたいと思います。
最近、VC2005を本格的に始めたため、わからない事が多くて
かなりてんぱってます。
今も、picture box 内の再描画がうまくできなくて困ってます。
また、質問させていただく事がある(もしかすると明日?)かもしれませんが、その時はご指南いただけると幸いです。
よろしくお願いします。

お礼日時:2007/07/31 23:00

★回答者 No.2 です。


・CString 型で上手く出来ないときは LPTSTR 型を使うのはどうですか。
 LPTSTR lpFname = TEXT("1111.jpg");
 SaveImage.Save( lpFname );
 とします。
・これなら VC2005 の文字列のデフォルトが Unicode になるため lpFname には
 ワイド文字としてセットされます。その lpFname を SaveImage.Save() に
 渡せば出来ませんか?
・特に CString 型を使わなければいけないという条件がないのなら LPTSTR 型で
 ソースを書き換えてみて下さい。
 他にも
 TCHAR szFname[ MAX_PATH ];
 
 lstrcpy( szFname, TEXT("1111.jpg") );
 SaveImage.Save( lpFname );
 でも良いかも。
・参考に。
    • good
    • 0
この回答へのお礼

お世話になっております。
ご回答ありがとうございます。
CStringを使用する必要はありません。
CImage.loadのときにCStringを使用したためその流れで使用しました。
動作確認したいと思います。
本当にありがとうございました。

お礼日時:2007/08/01 08:43

CString ss;


ssが使われていないですが、
SaveImage.Save(ss); ----(1)
のことですか。

>正常に保存できません
保存できないとは、(1)ファイルが作られない(2)ファイルは作られるが表示できない(3)作られる場所が違う(4)プログラムが異常終了する…等があると思いますが、どうでしょうか。
    • good
    • 0
この回答へのお礼

お世話になっております。
ご回答ありがとうございます。
申し訳ありません。ごちゃごちゃになってました。
SaveImage.Save(ss); ----(1)
が正解です。
症状は、ファイルは作られるが0KBのファイルになってしまいです。
よろしくお願いします。

お礼日時:2007/07/31 23:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!