一个奇怪的有关问题,大家帮忙
一个奇怪的问题,大家帮忙!
今天写了一段有关调用windows api的程序,如下:
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include <stdio.h>
#include <string.h>
int main()
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
int find = 1;
hFind = FindFirstFile("c:\\*.*", &FindFileData); //vs2005报错处
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("Invalid File Handle. GetLastError reports %d\n", GetLastError ());
return 0;
}
else
{
while(find)
{
printf ("The file's name is %s\n", FindFileData.cFileName);
find = FindNextFile(hFind, &FindFileData);
}
}
FindClose(hFind);
return 0;
}
用vc6.0编译运行后,程序顺利地显示出在c目录下的所有文件名称,但是在vs2005中则不能通过编译,具体报错如下:
Error 1 : cannot convert parameter 1 from 'const char [7]' to 'LPCWSTR'
经查阅网上资料后,说是要在 hFind = FindFirstFile("c:\\*.*", &FindFileData); 中的"c:\\*.*"前面加上L,如下:
hFind = FindFirstFile(L"c:\\*.*", &FindFileData);
能够成功地通过编译,但是程序运行后,只能显示c目录下文件名称的首个字母,百思不得其解,希望大家帮帮我,谢谢!
------解决方案--------------------
因为你的工程可能是UNICODE工程, 所以你调用的是FindFirstFileW,而不是FindFirstFileA
这需要你传入一个宽字符串.
FindFirstFile(L"c:\\*", ...)
this will be OK,
------解决方案--------------------
把工程属性里的,字符集,设置为多字节,把L去掉
今天写了一段有关调用windows api的程序,如下:
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include <stdio.h>
#include <string.h>
int main()
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
int find = 1;
hFind = FindFirstFile("c:\\*.*", &FindFileData); //vs2005报错处
if (hFind == INVALID_HANDLE_VALUE)
{
printf ("Invalid File Handle. GetLastError reports %d\n", GetLastError ());
return 0;
}
else
{
while(find)
{
printf ("The file's name is %s\n", FindFileData.cFileName);
find = FindNextFile(hFind, &FindFileData);
}
}
FindClose(hFind);
return 0;
}
用vc6.0编译运行后,程序顺利地显示出在c目录下的所有文件名称,但是在vs2005中则不能通过编译,具体报错如下:
Error 1 : cannot convert parameter 1 from 'const char [7]' to 'LPCWSTR'
经查阅网上资料后,说是要在 hFind = FindFirstFile("c:\\*.*", &FindFileData); 中的"c:\\*.*"前面加上L,如下:
hFind = FindFirstFile(L"c:\\*.*", &FindFileData);
能够成功地通过编译,但是程序运行后,只能显示c目录下文件名称的首个字母,百思不得其解,希望大家帮帮我,谢谢!
------解决方案--------------------
因为你的工程可能是UNICODE工程, 所以你调用的是FindFirstFileW,而不是FindFirstFileA
这需要你传入一个宽字符串.
FindFirstFile(L"c:\\*", ...)
this will be OK,
------解决方案--------------------
把工程属性里的,字符集,设置为多字节,把L去掉