RT.首先Edit显示的应该是无文本时界面情况。

这里逻辑设计直接见代码,。。
CHEdit::CHEdit()
{
m_crBackGnd = RGB(216, 231, 252);
m_brBackGnd.CreateSolidBrush(m_crBackGnd);
m_bFocus = false;
}
CHEdit::~CHEdit()
{
}
BEGIN_MESSAGE_MAP(CHEdit, CEdit)
ON_WM_CTLCOLOR_REFLECT()
ON_WM_PAINT()
ON_WM_SETFOCUS()
ON_WM_KILLFOCUS()
END_MESSAGE_MAP()
// CHEdit message handlers
HBRUSH CHEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetBkColor(m_crBackGnd);
return m_brBackGnd;
}
void CHEdit::OnPaint()
{
CString strText;
GetWindowText(strText);
if (!m_bFocus && strText.IsEmpty()) {
CPaintDC dc(this);
CRect rc;
GetClientRect(rc);
dc.Rectangle(&rc);
rc.DeflateRect(1,1);
dc.FillSolidRect(rc, RGB(192,192,192));
dc.SetBkColor(RGB(192,192,192));
dc.DrawText(_T("请在这里输入文字"), rc, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
return;
}
Default();
}
void CHEdit::OnSetFocus(CWnd* pOldWnd)
{
CEdit::OnSetFocus(pOldWnd);
m_bFocus = true;
}
void CHEdit::OnKillFocus(CWnd* pNewWnd)
{
CEdit::OnKillFocus(pNewWnd);
m_bFocus = false;
}
仅做记录。
本文介绍了一个自定义编辑控件的实现方法,通过重写编辑控件的行为来改变其默认样式和行为,例如背景颜色和焦点状态的变化,并在控件为空时显示提示文本。
1万+

被折叠的 条评论
为什么被折叠?



