VC++中关于TCHAR等的解释(二)

2014-04-06 17:34:03 · 作者: · 浏览: 157

 

  注意:如果你的项目已经隐式或是显式地包含了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的参数中,确定了分配字节的大小,并在内存中开辟相应的空间。