使用 SHFileOperation() 复制文件夹时出错
Error using SHFileOperation() to copy a folder
我正在尝试使用 SHFileOperation()
复制文件夹,但出现此错误:
a value of type "const char *" cannot be assigned to an entity of type "PCZZWSTR"
s.pTo
和 s.pFrom
。
我使用的代码是:
SHFILEOPSTRUCT s = { 0 };
s.hwnd = hWnd;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = "C:\Users\styler\Desktop\Folder1[=10=]";
s.pFrom = "C:\Users\styler\Desktop\Software\Folder2\Folder3\*[=10=]";
SHFileOperation(&s);
我在 s.pTo
和 s.pFrom
中做错了什么?我将它们设置为等于目标文件夹和源文件夹,但为什么这不起作用?
编译器告诉您您正在尝试将 char
字符串文字分配给 wchar_t
字符串指针 (PCZZWSTR
= CONST WCHAR *
)。这意味着您必须使用定义的 UNICODE
进行编译,其中 SHFileOperation()
映射到 SHFileOperationW()
,它需要 wchar_t*
字符串指针而不是 char*
字符串指针。
因此,您需要在字符串文字前加上 L
前缀,例如:
SHFILEOPSTRUCT s = { 0 };
s.hwnd = hWnd;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = L"C:\Users\styler\Desktop\Folder1[=10=]";
s.pFrom = L"C:\Users\styler\Desktop\Software\Folder2\Folder3\*[=10=]";
SHFileOperation(&s);
或者,由于您实际使用的是 SHFileOperation()
的 TCHAR
版本,请使用 TEXT()
宏将您的字符串文字与 [=22= 使用的实际字符类型相匹配]:
SHFILEOPSTRUCT s = { 0 };
s.hwnd = hWnd;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = TEXT("C:\Users\styler\Desktop\Folder1[=11=]");
s.pFrom = TEXT("C:\Users\styler\Desktop\Software\Folder2\Folder3\*[=11=]");
SHFileOperation(&s);
我正在尝试使用 SHFileOperation()
复制文件夹,但出现此错误:
a value of type "const char *" cannot be assigned to an entity of type "PCZZWSTR"
s.pTo
和 s.pFrom
。
我使用的代码是:
SHFILEOPSTRUCT s = { 0 };
s.hwnd = hWnd;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = "C:\Users\styler\Desktop\Folder1[=10=]";
s.pFrom = "C:\Users\styler\Desktop\Software\Folder2\Folder3\*[=10=]";
SHFileOperation(&s);
我在 s.pTo
和 s.pFrom
中做错了什么?我将它们设置为等于目标文件夹和源文件夹,但为什么这不起作用?
编译器告诉您您正在尝试将 char
字符串文字分配给 wchar_t
字符串指针 (PCZZWSTR
= CONST WCHAR *
)。这意味着您必须使用定义的 UNICODE
进行编译,其中 SHFileOperation()
映射到 SHFileOperationW()
,它需要 wchar_t*
字符串指针而不是 char*
字符串指针。
因此,您需要在字符串文字前加上 L
前缀,例如:
SHFILEOPSTRUCT s = { 0 };
s.hwnd = hWnd;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = L"C:\Users\styler\Desktop\Folder1[=10=]";
s.pFrom = L"C:\Users\styler\Desktop\Software\Folder2\Folder3\*[=10=]";
SHFileOperation(&s);
或者,由于您实际使用的是 SHFileOperation()
的 TCHAR
版本,请使用 TEXT()
宏将您的字符串文字与 [=22= 使用的实际字符类型相匹配]:
SHFILEOPSTRUCT s = { 0 };
s.hwnd = hWnd;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = TEXT("C:\Users\styler\Desktop\Folder1[=11=]");
s.pFrom = TEXT("C:\Users\styler\Desktop\Software\Folder2\Folder3\*[=11=]");
SHFileOperation(&s);