Я создаю пользовательский элемент управления 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");
Я не понимаю, почему элемент управления не отображает правильный символ. Это только показывает это: <
. Что я делаю неправильно?
ОБНОВЛЕНИЕ
Вот метод 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());
}