ページ 1 / 1
キャスト
Posted: 2009年3月05日(木) 19:21
by ざこ
void CDragDropDlg::OnDropfile(HDROP hDropInfo)
{
long files;
char filename[256];
files=DragQueryFile(hDropInfo,0xFFFFFFFF,filename,256);
DragQueryFile(hDropInfo,0xFFFFFFFF,filename,256);
CString Cname=getFileName(filename);//getFileNameはフルパスからパス名を取り出す関数
char *Newname=strcat(str_ed2,Cname);//問題の箇所
}
str_ed2にはC:\Documents and Setting ●●"が
Cnameにはtest.txtが入っています。
この2つを連結させたいのです。(※str_ed2hはCString型)
CString型からchar *型にキャストしたいのですができますでしょうか?
(LPCSTR)でキャストすればconst char*にはキャストできるみたいですが。
Re:キャスト
Posted: 2009年3月05日(木) 19:37
by バグ
CStringクラスには、GetAt、GetBufferというメンバ関数があり、キャストではありませんが、おそらく望んでいる事ができると思います。これらを調べてみてください。
しかし、CString同士で連結するだけなら、str1 + str2みたいな事もできますよ?
Re:キャスト
Posted: 2009年3月05日(木) 19:53
by toyo
キャストしなくてもそのままでできそうな気がしますが質問されているということはうまくいかなかったんですよね
(strcatの第2引数はconst char*なのでむしろLPCTSTRにキャストするほうが望ましいですが)
何かエラーが出たのでしょうか
str_ed2には文字列を追加する十分な領域が残ってますか
Re:キャスト
Posted: 2009年3月05日(木) 19:55
by ouh
こんな感じでできませんか?
char Newname[_MAX_PATH];
strcpy(Newname, (LPCTSTR)(str_ed2 + Cname));
Re:キャスト
Posted: 2009年3月05日(木) 19:56
by toyo
ああ勘違い
str_ed2がchar[ ]だと思ってました
str_ed2 + Cname
ではだめですか
Re:キャスト
Posted: 2009年3月05日(木) 20:59
by ざこ
あれおかしいな・・どっちかがchar * でどっちかがCString ような・・
CString から char *に変換できません というエラーだったので(逆かも)
Re:キャスト
Posted: 2009年3月05日(木) 21:20
by toyo
とりあえずstrcat( )の第1引数にCStringは使えません。キャストもできません。
NewnameをCString型にするのはだめですか。
MFCなら全部CStringでやるのがいいのでは。