TEXT宏中的C ++字符串变量

时间:2017-07-20 07:47:06

标签: c++ winapi

我正在为项目创建GUI,我需要知道如何将TEXT宏与变量一起使用。

这是我用于打印到UI的内容:

SendMessage(console, EM_SETSEL, -1, 0);
SendMessage(console, EM_REPLACESEL, 0, (LPARAM)TEXT(message));

"消息"是一个字符串变量。我也用chars尝试过,但那仍然是错误。

我得到的错误:Lmessage未定义

任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:4)

TEXT是一个宏,取决于其他宏(更具体地说,UNICODE)可以在宏的参数中添加前导L

所以,例如TEXT("Foo")变为L"Foo",这是一个宽字符(wchar_t)字符串。

将前导L添加到变量当然不会使变量宽字符的内容,它所做的一切基本上都是重命名变量,如您的代码TEXT(message)所示变为Lmessage

简而言之,您只应 将其用于文字字符串。

答案 1 :(得分:1)

TEXT()宏仅适用于编译时文字,而不适用于变量。如果message是ANSI字符串,并且您需要将其作为Unicode字符串发送,反之亦然,那么您必须使用MultiByteToWideChar() / WideCharToMultiByte()或等效项在运行时执行转换。