读书人

helloMFC的一个基本有关问题

发布时间: 2012-12-15 15:16:03 作者: rapoo

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,对的,正解,呵呵
[其他解释]
读不通
[其他解释]
好吧,学习学习

读书人网 >VC/MFC

热点推荐