CRichEditCtrl:无法用 Unicode 字符串替换选择内容

问题描述 投票:0回答:1

在MFC/C++中,我有一个rich edit 2.0控件,类

CRichEditCtrl
,即
RichEdit20W
。 Rich edit 2.0 控件应该支持 Unicode。我用它来显示 Unicode 字符。但
ReplaceSel
函数不接受 Unicode 字符串。例如

CRichEditCtrl re;
wstring line;
auto x = line.c_str(); // array of const wchar_t
re.ReplaceSel(x); // ERROR

出现编译器错误,因为

CRichEditCtrl::ReplaceSel
的原型为

void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE);

并且

LPCTSTR
const char *

如何使用 Unicode 字符串进行替换?

Windows 11 专业版 Visual Studio 2022

c++ mfc cricheditctrl
1个回答
0
投票

如果

LPCTSTR
const char *
那么您的项目设置是多字节字符而不是 unicode。答案很简单,您必须使用您喜欢的转换函数将 unicode 字符串转换为 ansi,例如
WidecharToMultibyte()
wcstombs()
std::codecvt
。请注意,您正在将字符串转换为能够表示“更少”字符值的类型,即这些函数可能会失败。

© www.soinside.com 2019 - 2024. All rights reserved.