首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

hello,MFC的一个基本有关问题

2012-12-15 
hello,MFC的一个基本问题dc.DrawText (_T (Hello, MFC)这句代码中的_T是什么意思?#define _T(x)__T(x)#d

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

热点排行