CStringの使い方について

解決


かかし  2010-11-01 20:00:27  No: 72017  IP: 192.*.*.*

お世話になります。
現在、VS2005 VC++でダイアログベースにて開発しています。

ダイアログのListBoxにドラック&ドロップしたファイルパス表示
しようとしています。

DragFile()をサブクラスにして、そこで取得したドラック&ドロップの
フォルダパス(CString)をダイアログクラスの
文字列結合メソッドに文字列(CString)を渡してフォルダパスとファイル名
を結合すると結果(csData)がファイル名のみとなってしまいます。

//ドラック&ドロップ
void filelist::OnDropFiles(HDROP hDropInfo)
{
     CString folderPath = L"C:\\TestData\\";
     
     Dlg->fileLik(CString folderPath);
}


void Dlg::fileLik(CString folderPath)
{
csData = folderPath + fileName;

return;
}

デバックにてトレースすると引数には"C:\\TestData\\"
が格納されていますがcsData = folderPath + fileName;
を実行するとcsDataはファイル名のみとなります。

御存じの方おりましたらお教え頂けないでしょうか。

編集 削除
かかし  2010-11-01 20:21:56  No: 72018  IP: 192.*.*.*

かかしです。
追記致します。

//ドラック&ドロップ
void filelist::OnDropFiles(HDROP hDropInfo)
{
//     CString folderPath = L"C:\\TestData\\";
     
     Dlg->fileLik(L"C:\\TestData\\");
}

上記のコード変更すると文字列結合ができます。

編集 削除
瀬戸っぷ  2010-11-01 23:14:25  No: 72019  IP: 192.*.*.*

具体的に再現できるコードがないとなんとも…
# 掲示してるコード、端折っていたりしませんか?

>csData = folderPath + fileName;

csData、およびfileNameは何者?
filelist::OnDropFiles()で受け取ったhDropInfoを使っていないようですが、コレでドラッグ&ドロップされたファイル名取れるの?
などなど…

編集 削除
rin  2010-11-02 10:00:51  No: 72020  IP: 192.*.*.*

たぶんだけど、
文字列結合がうまくいかないため、
「D&Dから受け取って〜」の部分を削って、文字列結合だけの実験をしてるのだと思います
まぁ、質問の本題にはいらん情報はないほうがいいのだけど

ちょっと気になったのだけど

void filelist::OnDropFiles(HDROP hDropInfo)
{
     CString folderPath = L"C:\\TestData\\";
     
     Dlg->fileLik(CString folderPath);    ←  これコンパイル通る?
}

編集 削除
かかし  2010-11-03 12:10:46  No: 72021  IP: 192.*.*.*

おせわになります。
filelist::OnDropFiles側のコードにミスがありました。
修正したら解決できました。

編集 削除