Unicode字符进入CEdit
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unicode字符进入CEdit相关的知识,希望对你有一定的参考价值。
我正在生成一个自定义CEdit
控件,该控件使我可以在其上设置一些不同的颜色。在我生成样式为ES_PASSWORD
的控件之前,它可以正常工作。
在这些情况下,我找不到写想要的字符的方法(大黑点)。这是我尝试过的一些代码:
第一个选项:
int lenght = text.GetLength();
text = "";
for (int i = 0; i < lenght; i++) text.AppendChar('u25CF');
第二个选项:
int lenght = text.GetLength();
text = "";
for (int i = 0; i < lenght; i++) text.Append("u25CF");
第三选项:
int lenght = text.GetLength();
text = "";
for (int i = 0; i < lenght; i++) text.AppendChar((char)"u25CF");
我不明白为什么控件没有显示正确的字符。它仅显示以下内容:<
。我究竟做错了什么?
UPDATE
这里是我正在使用的OnPaint()
方法:
void CEasyEdit::OnPaint()
{
// I generate all requiered objects.
CPaintDC dc(this);
CRect ClientRect;
GetClientRect(&ClientRect);
// I define which colors I want to use.
SetDefaultColors();
// I paint the background and its borders.
CBrush brush(m_clrBack);
dc.FillRect(ClientRect, &brush);
CRect border_rect;
this->GetClientRect(border_rect);
border_rect.InflateRect(1, 1);
dc.Draw3dRect(border_rect, m_clrBack, m_clrBack);
border_rect.InflateRect(1, 1);
dc.Draw3dRect(border_rect, m_clrBack, m_clrBack);
// I redefine the size of the rect.
CRect textRect(ClientRect);
textRect.DeflateRect(4, 1);
// I define the text to draw.
CString text;
GetWindowText(text);
// If it displays a password, I change its characters.
if (GetStyle() & ES_PASSWORD)
{
// I redefine the text to show.
int lenght = text.GetLength();
wchar_t f = '1060';
text = "";
for (int i = 0; i < lenght; i++) text.Append("u0053");
}
// I draw the text.
dc.SetTextColor(m_clrText);
dc.SetBkColor(m_clrBack);
dc.SelectObject(GetFont());
dc.DrawText(text, -1, textRect, GetStyle());
}
答案
我正在查找CEdit::GetPasswordChar
,但我注意到它说:
如果您以
CEdit::GetPasswordChar
样式创建编辑控件,则DLL支持控件的控件确定默认密码字符。清单或ES_PASSWORD
方法确定哪个DLL支持编辑控件。如果user32.dll支持编辑控件,默认密码字符为ASTERISK('*',U + 002A)。 如果comctl32.dll版本6支持编辑控件,默认字符为BLACK CIRCLE('●',U + 25CF)。有关更多信息哪个DLL和版本支持常用控件,请参见InitCommonControlsEx
。那就是说,为什么你不能只在说明中使用
InitCommonControlsEx
:
指定要代替字符显示的字符由用户键入。如果ch为0,则由用户键入的实际字符显示。
以上是关于Unicode字符进入CEdit的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在不使用 /UNICODE 编译的情况下使用 MFC 的 CEdit 函数“ShowBalloonTip”?