PathCombine 関数に問題があります。SHFileOperation() と組み合わせて正しく動作しないようです。私のコードは次のとおりです。
//beginning of method
TCHAR* root = new TCHAR[MAX_PATH];
root = L"C:\\Users\\jhow\\Desktop\\\0";
//later on in the method
TCHAR* t1Dir = new TCHAR[MAX_PATH]; //root
TCHAR* t2Dir = new TCHAR[MAX_PATH]; //temp
PathCombine(t1Dir,root,L"Folder1\\%REPLACE_THIS%\\\0");
PathCombine(t2Dir,root,L"Folder1\\temp\0");
sf.pFrom = t1Dir;
//sf.pFrom = L"C:\\Users\\jhow\\Desktop\\Folder1\\%REPLACE_THIS%";
sf.pTo = temporaryDir;
//Copy files
int n = SHFileOperation(&sf);
上記のようにすると、メソッドは sf.pTo を認識しますが、何らかの理由で sf.pFrom を認識しません (パス名の末尾にある \ と \0 のさまざまな組み合わせを試した後でも)。n は 2 になります。これは、ファイルが見つからないことを意味すると思います...しかし、たとえば、コメントアウトすると。
sf.pFrom = t1Dir;
そしてそれを次のように置き換えます:
sf.pFrom = L"C:\\Users\\jhow\\Desktop\\Folder1\\%REPLACE_THIS%";
SHFileOperation() は機能します... ゼロが返され、すべてのファイルがディレクトリにコピーされていることがわかります。まったく同じ文字列のように見えるので、この奇妙な見方をしています(デバッグして変数にカーソルを合わせても)...なぜこれが起こっているのか知っている人はいますか?構文またはロジックに何か問題がありますか? 見えないから。Visual Studio 2008 を使用しています。お時間をいただきありがとうございます。