LPCSTR是个什么东西,VC偶怎么学不明白?
看到:
DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, (DLGPROC)ProcMain, 0);
偶把它改成:
LPCSTR lpTemplateName1 = MAKEINTRESOURCE(IDD_DIALOG);
DialogBoxParam(hInstance, lpTemplateName1, NULL, (DLGPROC)ProcMain, 0);
调试查看:lpTemplateName1 的值,发现什么也没有,显示地址0x00000065。。。。。
问题:LPCSTR是个什么东西?是字符串指针吗?为什么没有值?我的程序能够生成窗口的。。。。。
请高手说一说
[解决办法]
typedef char CHAR ;
typedef wchar_t WCHAR ;
typedef CHAR * PCHAR, * LPCH, * PCH, * NPSTR, * LPSTR, * PSTR ;
typedef CONST CHAR * LPCCH, * PCCH, * LPCSTR, * PCSTR ;
typedef WCHAR *PWCHAR, * LPWCH, * PWCH, * NWPSTR, * LPWSTR, * PWSTR ;
typedef CONST WCHAR * LPCWCH, * PCWCH, * LPCWSTR, *PCWSTR ;
#ifdef UNICODE
typedef WCHAR TCHAR, * PTCHAR ;
typedef LPWSTR LPTCH, PTCH, PTSTR, LPTSTR ;
typedef LPCWSTR LPCTSTR ;
#else
typedef char TCHAR, * PTCHAR ;
typedef LPSTR LPTCH, PTCH, PTSTR, LPTSTR ;
typedef LPCSTR LPCTSTR ;
#endif
[解决办法]
typedef char CHAR ;
typedef wchar_t WCHAR ;
typedef CHAR * PCHAR, * LPCH, * PCH, * NPSTR, * LPSTR, * PSTR ;
typedef CONST CHAR * LPCCH, * PCCH, * LPCSTR, * PCSTR ;
typedef WCHAR *PWCHAR, * LPWCH, * PWCH, * NWPSTR, * LPWSTR, * PWSTR ;
typedef CONST WCHAR * LPCWCH, * PCWCH, * LPCWSTR, *PCWSTR ;
#ifdef UNICODE
typedef WCHAR TCHAR, * PTCHAR ;
typedef LPWSTR LPTCH, PTCH, PTSTR, LPTSTR ;
typedef LPCWSTR LPCTSTR ;
#else
typedef char TCHAR, * PTCHAR ;
typedef LPSTR LPTCH, PTCH, PTSTR, LPTSTR ;
typedef LPCSTR LPCTSTR ;
#endif
=================================
一個宏。
[解决办法]
LPCSTR是指针,const char * ,使用上,不要更改这个指针指向的字符串内容,属常量字符串。
[解决办法]
在这里,仅仅起到类型转换的作用,并不是指向字符串。因为DialogBoxParam的参数类型决定的。
[解决办法]
MAKEINTRESOURCE是把数值强制转换成LPCSTR,因为DialogBoxParam的参数类型需要LPCSTR,MAKEINTRESOURCE转换成的LPCSTR其高4位为0,DialogBoxParam根据这个特征来区分这个参数是指向实际的字符串还是仅仅是对话框类型的标识符.
[解决办法]
L --- 长
P --- 指针
C --- 只读
T --- 用于过渡UNICODE的智能宏的代名次,有一系列T宏
S \
T > - 字符串
R /
综上,LPCTSTR是一个指向一段只读的字符串的(长)指针,当系统定义了UNICODE宏时,它相当于“LPCSTR”,否则相当于“LPCWSTR”,其中“W”是宽(Wide)字符的意思。