注意:如果你的项目已经隐式或是显式地包含了Windows.h那就不必包含了。
char* 替换: LPSTR
const char* 替换: LPCSTR
WCHAR* 替换: LPWSTR
const WCHAR* 替换: LPCWSTR (C在W之前, 因为 const 在 WCHAR之前)
TCHAR* 替换: LPTSTR
const TCHAR* 替换: LPCTSTR
现在,希望你可以理解下面的函数原型
BOOL SetCurrentDirectory( LPCTSTR lpPathName );
DWORD GetCurrentDirectory(DWORD nBufferLength,LPTSTR lpBuffer);
继续,你一定见过一些函数/方法让你传递字符集的大小,或者返回它的大小,比如GetCurrentDirectory函数,需要传递字符的数目而不是字节的数目举个例子
TCHAR sCurrentDir[255];
// Pass 255 and not 255*2
GetCurrentDirectory(sCurrentDir, 255);
另一方面,如果你需要分配字符的数目,你比如分配适当大小的字节,在C++中,你可以简单的使用new方法:
LPTSTR pBuffer; // TCHAR*
pBuffer = new TCHAR[128]; // Allocates 128 or 256 BYTES, depending on compilation.
但是,你如果你使用内存分配函数像malloc,LocalAlloc, GlobalAlloc, 等,你必须指定字节数。
pBuffer = (TCHAR*) malloc (128 * sizeof(TCHAR) );
对返回值进行一次类型转换是必需的,如你所知,在malloc的参数中,确定了分配字节的大小,并在内存中开辟相应的空间。