• 締切済み

CStringをLPCTSTRへ変換

お世話になっております。 VC2005を使用しております。 現在、CFileDialogのGetPathName(CString型)で設定された ファイル名に、CImage.save(LPCTSTR型)を使用して画像を保存したい と思っております。 しかし、CString型をLPCTSTR型に変換する方法がわかりません。 方法を教えていただけないでしょうか? 今は、GDI+を使用してませんが、やはり今後の事を考えると使用して ソフトを組んだほうがよいのでしょうか? よろしくお願いします。

みんなの回答

  • ddnp009
  • ベストアンサー率25% (15/58)
回答No.2

MFC/ATLのCStringならLPCTSTRへの変換operatorが 提供されているはず。キャストせずとも使えませんか? なお、明示的にキャストするにしても、static_cast<LPCTSTR>(CString)とするのをお勧めしますよ。 # 今後のことを見据えておられるようなので。

cappcino
質問者

お礼

お世話になっております。 ご連絡遅れて申し訳ありません。 ご回答ありがとうございます。 確認したいと思います。 今後ともよろしくお願いします。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

CStringであれば、こんな感じでOKのはずです。 CString str; CImage.save((LPCTSTR)str); >今は、GDI+を使用してませんが、やはり今後の事を考えると使用してソフトを組んだほうがよいのでしょうか? WindowsXP以前のOSではDLLが入っていないので使う環境しだいですかね。

cappcino
質問者

お礼

お世話になっております。 ご回答ありがとうございます。 参考にさせていただきます。 ありがとうございました。 今後ともよろしくお願いします。

関連するQ&A

  • CString から LPCTSTRの型に変換

    visual studio 2013 VC++を使用していますが、WINDOWSの関数に渡すためにCString からLPCTSTRに変換する必要があります。実際にどのようにするのかわかりません。 例えば、以下のサンプルは他の質問コーナーの回答をアレンジしたものです CString str = _T("ABC"); int siz = str.GetLength()+1; LPCTSTR pszFName = new TCHAR[siz]; _tcscpy_s( pszFName, siz, str ); で変換するのですが LPCTSTRからwchar_t*へ変換できませんとエラーがでます _tcscpy_s()は使用できないのでしょうか

  • CImageのファイル名を指定して保存

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

  • WORD型をCString型に変換する方法

    WORD型をCString型に変換する方法について質問させていただきました。 WORD型の中身は整数値が入っておりその整数の値をCStringに変換する方法がわからなかったので質問させていただきました。 VC++2010を使用しており、困っています。どうかよろしくお願いします

  • CStringからchar*への型変換について教えてください。

    以前の質問に int型 → CString型/char型 がありましたが、 CString型をchar*型に変換する方法を 教えていただければありがたいです。 MSDNで「LPCTSTRキャスト」が説明されていましたが、 例が載ってないのでよくわかりませんでした。 よろしくお願いします。

  • CStringとCByteArrayの変換

    いつもお世話になっています。 MFCのCStringクラスとCByteArrayを相互に変換したいと考えているのですが、どうもうまくいきません。 文字コードはユニコードを想定しています。 ====================================================== CByteArray data; CString cs1 = _T("あいうえお"); CString cs2; LPBYTE lpByte = (LPBYTE)(LPCTSTR)cs1.GetBuffer(); data.SetSize(cs1.GetLength() * sizeof(TCHAR)); CopyMemory(data.GetData(), lpByte, data.GetSize()); cs1.ReleaseBuffer(); cs2 = (LPCTSTR)data.GetData(); AfxMessageBox(cs2); ====================================================== (現在の出力状況) あいうえお・・・・ 文字は正しく出力されますが、語尾に文字化けしたようなものがつきます。 他に良い方法があればよろしくお願いします。

  • CImgae

    お世話になっております。 VC2005を使用しております。 その中で、CImageを使用してjpg画像を読み込み(CImage.load())、 picture box に表示します。 その後、picture box 内で画像を編集し、その編集画像を CImageを使用して保存(CImage.save())します。 どのようにすればよいかわかりません。 教えていただけないでしょうか? よろしくお願いします。

  • LoadBitmapでCStringを使いたい

    VC++.NETでMFCアプリケーションを作っています。 CBitmap::LoadBitmapの定義では  BOOL LoadBitmap(LPCTSTR lpszResourceName); とあるのですが、リソースネームはCString型の変数では指定できないのでしょうか? ビットマップリソースがIDB_BMP1~IDB_BMP5まであり、状況により表示する画像を切り替える、ということをしたいのですが。   (略)  int n=1;  CString fname;  CBitmap bmp;  fname.Fromat("IDB_BMP%d",n);  bmp.LoadBitmap(fname);  pOldbmp = myDC.SelectObject(&bmp);  pDC->BitBlt(0, 300, 50, 77, &myDC, 0, 0, SRCCOPY);   (略) とすると画像が読み込まれません。 なお、LoadBitmapのfnameの部分を IDB_BMP1 と置き換えれば、画像は正常に表示できます。 MFC自体が初めてなので、分かりやすいご説明をいただけると嬉しいです。

  • 特殊文字「\」の変換の方法

    VC++2005のMFCにてプログラムを作成しています。 CFileDialogにてテキストファイルを読み込み、 読込んだファイルパスの「\」を「\\」になるように変換したいのですが、 実装の方法が分かりません。 ===================================== 例)C:\test\hoge.txt ⇒ C:\\test\\hoge.txt と変換する。 ===================================== 下記にファイルパスをCstring型で読み込み、 char型に変換するまでのプログラムを記載します。 理想としては、char型配列の中に、 「C:\\test\\hoge.txt」のような変換後のファイルパスを 入れたいのです。 解決方法をご存知の方おられましたら、ご教示お願いできませんでしょうか。 【プログラム】 /* ファイルオープンダイアログを表示 */ CFileDialog ReadDlg( TRUE, NULL, "*.txt", OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, "txtファイル(*.txt)", this ); CString filepath; if( ReadDlg.DoModal() == IDOK ) { filepath = ReadDlg.GetPathName(); // ファイルのフルパス名を取得 } CFile cfile; CFileException ex; if( !cfile.Open( filepath, CFile::modeRead , &ex ) ) { AfxMessageBox( "ファイルを開くのに失敗しました" ); // エラーメッセージを表示 return; } char st[255] = ""; strcpy( st, filepath );

  • pictureboxの画像の保存

    お世話になっております。 VC2005を使用しております。 pictureboxに描画されている画像を、CImageクラスを使用してjpgでファイルに保存するにはどのようにすればよいのでしょうか? 教えてください。 よろしくお願いします。

  • CString: 識別子が見つかりません

    開発環境:Visual c++ 2008 Express Edion OS:Win XP Pro 次のエラーが表示されていて解決できません。 エラー内容は 1>d:\vc_source\dump\dump\Form1.h(448) : error C3861: 'CString': 識別子が見つかりませんでした です。 ちなみにinclude文は以下です。 #include <Windows.h> #include <stdio.h> #include <stdlib.h> #include <tchar.h> #include <string> #include <cstring> やりたいことは String型からCString型を経由して、TCHAR型へ変換することです。またはその逆方法の変換です。そのためにCString型は必要になるのですが、そこでコンパイルエラーになっています。 知っているかがおりましたら、教えて下さい。

専門家に質問してみよう