文本编辑器<一>文字输出

1 创建单文档应用程序;

2 插入光标,为View类添加OnCreate函数,加入如下代码

	CClientDC dc(this);

	TEXTMETRIC tm;
	dc.GetTextMetrics(&tm);

	CreateSolidCaret( tm.tmAveCharWidth/2,tm.tmHeight );
	ShowCaret();

3 增加字符输入,为View类添加OnChar函数,加入如下代码

	CClientDC dc(this);

	LOGFONT log;
	GetObject( ::GetStockObject(DEFAULT_GUI_FONT),sizeof(log),&log );
	log.lfHeight = 20;
	log.lfWidth = 20;
	log.lfCharSet = GB2312_CHARSET;
	lstrcpy( log.lfFaceName,"黑体" );

	CFont font;
	font.CreateFontIndirect(&log);
	CFont *pOrgFont = dc.SelectObject(&font);

	TEXTMETRIC tm;
	dc.GetTextMetrics(&tm);
	if(nChar==0x0d)         /*回车*/
	{
		m_strText="";
		m_jumpOffPoint.x = 0;
		m_jumpOffPoint.y += tm.tmHeight;
	}
	else if(nChar==0x08)    /*删除*/
	{
		COLORREF color = dc.SetTextColor(dc.GetBkColor());
		dc.TextOut(m_jumpOffPoint.x,m_jumpOffPoint.y,m_strText);
		m_strText = m_strText.Left(m_strText.GetLength()-1);
		dc.SetTextColor(color);
	}
	else
	{
		m_strText += (wchar_t)nChar;
	}

	CSize size = dc.GetTextExtent(m_strText);
	CPoint point;
	point.x = m_jumpOffPoint.x+size.cx;
	point.y = m_jumpOffPoint.y;
	SetCaretPos(point);

	dc.TextOut(m_jumpOffPoint.x,m_jumpOffPoint.y,m_strText);

	dc.SelectObject(pOrgFont);


存在问题:

回车有残影,退格有残影

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值