源程序如下:#include <windows.h>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine,int nShowCmd)
{
HANDLE hFile;
LPTSTR IpBuffer="Hello World!";
hFile=CreateFile("C:\\File.txt",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
CloseHandle(hFile);
TCHAR szBuf(128);
DWORD dwRead;
DWORD dwWritten;
hFile=CreateFile("C:\\File.txt",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
WriteFile(hFile,IpBuffer,strlen(IpBuffer)+1,&dwRead,NULL);
SetFilePointer(hFile,0,NULL,FILE_BEGIN);
if(ReadFile(hFile,szBuf,strlen(IpBuffer)+1,&dwWritten,NULL))
{
MessageBox(NULL,szBuf,"EXAM",MB_OK);
}
CloseHandle(hFile);
}正在编译...
p35.cpp
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(6) : error C2440: “初始化”: 无法从“const char [13]”转换为“LPTSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(7) : error C2664: “CreateFileW”: 不能将参数 1 从“const char [12]”转换为“LPCWSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(12) : error C2664: “CreateFileW”: 不能将参数 1 从“const char [12]”转换为“LPCWSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(13) : error C2664: “strlen”: 不能将参数 1 从“LPTSTR”转换为“const char *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(15) : error C2664: “strlen”: 不能将参数 1 从“LPTSTR”转换为“const char *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(15) : error C2664: “ReadFile”: 不能将参数 2 从“TCHAR”转换为“LPVOID”
从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(17) : error C2664: “MessageBoxW”: 不能将参数 2 从“TCHAR”转换为“LPCWSTR”
从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
生成日志保存在“file://c:\Documents and Settings\True\My Documents\Visual Studio 2005\Projects\p35\p35\Debug\BuildLog.htm”
p35 - 7 个错误,0 个警告
为什么会这样呢?
{
HANDLE hFile;
LPTSTR IpBuffer="Hello World!";
hFile=CreateFile("C:\\File.txt",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
CloseHandle(hFile);
TCHAR szBuf(128);
DWORD dwRead;
DWORD dwWritten;
hFile=CreateFile("C:\\File.txt",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
WriteFile(hFile,IpBuffer,strlen(IpBuffer)+1,&dwRead,NULL);
SetFilePointer(hFile,0,NULL,FILE_BEGIN);
if(ReadFile(hFile,szBuf,strlen(IpBuffer)+1,&dwWritten,NULL))
{
MessageBox(NULL,szBuf,"EXAM",MB_OK);
}
CloseHandle(hFile);
}正在编译...
p35.cpp
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(6) : error C2440: “初始化”: 无法从“const char [13]”转换为“LPTSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(7) : error C2664: “CreateFileW”: 不能将参数 1 从“const char [12]”转换为“LPCWSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(12) : error C2664: “CreateFileW”: 不能将参数 1 从“const char [12]”转换为“LPCWSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(13) : error C2664: “strlen”: 不能将参数 1 从“LPTSTR”转换为“const char *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(15) : error C2664: “strlen”: 不能将参数 1 从“LPTSTR”转换为“const char *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(15) : error C2664: “ReadFile”: 不能将参数 2 从“TCHAR”转换为“LPVOID”
从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\true\my documents\visual studio 2005\projects\p35\p35\p35.cpp(17) : error C2664: “MessageBoxW”: 不能将参数 2 从“TCHAR”转换为“LPCWSTR”
从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
生成日志保存在“file://c:\Documents and Settings\True\My Documents\Visual Studio 2005\Projects\p35\p35\Debug\BuildLog.htm”
p35 - 7 个错误,0 个警告
为什么会这样呢?
TCHAR到LPVOID不同的類型要強制類型轉換 TCHAR szBuf(128);的意思並不是TCHAR szBuf[128];
测定宽字符长度的函数是wcslen,而不是strlen。
不是很有用,_T是一个宏,如果定义了unicode,_T("x")就相当于L"x",这是宽字符
如果没有定义unicode,_T("x")就相当于"x"
FAQ: Cannot convert from 'const char [..]' to 'LPCTSTR'