MFC中 MessageBox 函数字符串前加 L 啥意思??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC中 MessageBox 函数字符串前加 L 啥意思??相关的知识,希望对你有一定的参考价值。

比如:MessageBox(L"qwerty",L"fgsfhjs")

加这些L是什么意思??

vc++在最近的几个版本 例如 vs2003 2005,2008等等 MFC 默认的 字符集

unicode 见图

项目属性图

所以用L 把字符串转换成unicode字符串,如果 使用 “多字节字符集” 则不需要L

建议 使用  _T  宏 来代替这个 L,关于_T 宏 相见 tchar.h

大体源码是这么的:

#define __T(x) L ## x 

#define _T(x) __T(x) 

作用是 当使用unicode 字符集的时候 _T 被替换为L

使用宽字符 就替换为空

参考技术A 把字符串转换成unicode字符串,这种字符串一个字符占两个字节
而一般ASCII字符是占一个字节
参考技术B 也相当于LPCTSTR类型 参考技术C L开头表示宽字符串文字,表示“”中的字符不能用单字符表示 参考技术D LZ可以去看一下什么是宽字符.

MFC MessageBox函数的注意点


以上是关于MFC中 MessageBox 函数字符串前加 L 啥意思??的主要内容,如果未能解决你的问题,请参考以下文章

MFC MessageBox函数的注意点

mfc 弹出对话框 类似韩文乱码

为啥在传参过程中参数会自动减一(MFC)

C语言中messagebox的用法

afxmessagebox和messagebox

AfxMessageBox与MessageBox用法与区别