Edit分有文本和无文本内容记录

本文介绍了一个自定义编辑控件的实现方法,通过重写编辑控件的行为来改变其默认样式和行为,例如背景颜色和焦点状态的变化,并在控件为空时显示提示文本。

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;
}
仅做记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值