hello,MFC的一个基本问题
dc.DrawText (_T ("Hello, MFC")
这句代码中的_T是什么意思?
#define _T(x) __T(x)
#define __T(x) L ## x
这是定义,可是我看不出来他在这里是什么作用啊?
MSDN给出这个函数的原型:
virtual int DrawText( LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat );
int DrawText( const CString& str, LPRECT lpRect, UINT nFormat );
我又尝试了一下:
char buf[] = "Hello, MFC";
dc.DrawText ((LPCTSTR)buf, -1, &rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER);
还是不对,那是说空终止的字符串么,符合第一个啊?
PS:我知道用CString类型总是可以的。
[最优解释]
#define _T(x) __T(x)
#define __T(x) L ## x
这个是自动匹配码制的通用宏
多字节和Unicode对于字符串处理要求不同,有这个可以不用管码制(Character)了。
[其他解释]
char*换成wchar_t*如果你的程序是unicode
[其他解释]
_T 指的是TCHAR , 可以兼容char , WCHAR(宽字符)
[其他解释]
在字符串前加上大写L表示着是宽字符
[其他解释]
bingo,对的,正解,呵呵
[其他解释]
读不通
[其他解释]
好吧,学习学习