L表示long指針,這是爲了兼容Windows 3.1等16位操作系統遺留下來的,在win32中以及其他的32爲操作系統中, long指針和near指針及far修飾符都是爲了兼容的作用,沒有實際意義。即win32中,long,near,far指針與普通指針沒有區別,LP與P是等效的。
P表示這是一個指針。
T表示_T宏,這個宏用來表示你的字符是否使用UNICODE, 如果你的程序定義了UNICODE或者其他相關的宏,那麼這個字符或者字符串將被作爲UNICODE字符串,否則就是標準的ANSI字符串。
STR表示這個變量是一個字符串。
C表示是一個常量,const。
LPTSTR:
如果定義了UNICODE宏則LPTSTR被定義爲LPWSTR。typedef LPTSTR LPWSTR;
否則LPTSTR被定義爲LPSTR。 typedef LPTSTR LPSTR;
下面列出一些常用的typedefs:
類型 MBCS Unicode
WCHAR wchar_t wchar_t
LPSTR char* char*
LPCSTR const char* const char*
LPWSTR wchar_t* wchar_t*
LPCWSTR const wchar_t* const wchar_t*
TCHAR char wchar_t
LPTSTR TCHAR*(或char*) TCHAR* (或wchar_t*)
LPCTSTR const TCHAR* const TCHAR*
由於Win32 API文檔的函數列表使用函數的常用名字(例如,SetWindowText"),所有的字符串都是用TCHAR來定義的。(除了XP中引入的只適用於Unicode的API)。所以結論,在VS2005系統中,爲提高可移植性,定義字符串時用TCHAR,轉化爲UNICODE時用_T而不用L。