首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个奇怪的有关问题,大家帮忙

2012-02-19 
一个奇怪的问题,大家帮忙!今天写了一段有关调用windows api的程序,如下:#define _WIN32_WINNT 0x0400#incl

一个奇怪的问题,大家帮忙!
今天写了一段有关调用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中则不能通过编译,具体报错如下:
Error1: 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去掉

热点排行