お世話になります。
現在、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はファイル名のみとなります。
御存じの方おりましたらお教え頂けないでしょうか。
かかしです。
追記致します。
//ドラック&ドロップ
void filelist::OnDropFiles(HDROP hDropInfo)
{
// CString folderPath = L"C:\\TestData\\";
Dlg->fileLik(L"C:\\TestData\\");
}
上記のコード変更すると文字列結合ができます。
具体的に再現できるコードがないとなんとも…
# 掲示してるコード、端折っていたりしませんか?
>csData = folderPath + fileName;
csData、およびfileNameは何者?
filelist::OnDropFiles()で受け取ったhDropInfoを使っていないようですが、コレでドラッグ&ドロップされたファイル名取れるの?
などなど…
たぶんだけど、
文字列結合がうまくいかないため、
「D&Dから受け取って〜」の部分を削って、文字列結合だけの実験をしてるのだと思います
まぁ、質問の本題にはいらん情報はないほうがいいのだけど
ちょっと気になったのだけど
void filelist::OnDropFiles(HDROP hDropInfo)
{
CString folderPath = L"C:\\TestData\\";
Dlg->fileLik(CString folderPath); ← これコンパイル通る?
}
おせわになります。
filelist::OnDropFiles側のコードにミスがありました。
修正したら解決できました。