MFC实现文本的基本操作
2013-08-08 15:59
309 查看
1、在消息WM_CREAT响应函数OnCreat中窗口创建文本插入符。
2、设置光标的位置为当前鼠标的点击位置
3、通过捕获WM_CHAR消息,获取键盘输入消息。
int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; CClientDC dc(this); TEXTMETRIC tm; //定义一个文本信息结构体,用于接收文本的字体信息 dc.GetTextMetrics(&tm); //获取当前文本的字体信息,主要需要字体的高度和宽度 CreateSolidCaret(tm.tmAveCharWidth, tm.tmHeight); //创建一个 文件插入符 ShowCaret(); //显示光标 return 0; }
2、设置光标的位置为当前鼠标的点击位置
CString strLine; //存放文本缓冲区 POINT OldPoint; //存放鼠标的当前位置 void CMyView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default SetCaretPos(point); //设置光标的位置为鼠标当前点击位置 OldPoint = point; //存放当前鼠标位置 strLine.Empty(); //清空文本缓冲区,就行下一次输入 CView::OnLButtonDown(nFlags, point); }
3、通过捕获WM_CHAR消息,获取键盘输入消息。
void CMyView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics(&tm); //获取文本信息 if (0x0d == nChar) //换行处理 { strLine.Empty(); //情况缓冲区等待下一次输入 OldPoint.y += tm.tmHeight; //文本插入符 Y坐标加一个文本高度 } else if (0x08 == nChar) //回车键处理 { COLORREF clr = dc.SetTextColor(dc.GetBkColor()); //设置文本颜色为白色背景 dc.TextOut(OldPoint.x, OldPoint.y, strLine); //输出文本 strLine = strLine.Left(strLine.GetLength()-2); //去掉输出字符串的最后一位+空格 dc.TextOut(OldPoint.x, OldPoint.y, strLine); dc.SetTextColor(clr); //恢复文本颜色 } else { strLine += nChar; //把输入的字符 缓存在缓冲区中 } /* 设置文本插入符的位置为当前输入位置 */ CSize sz = dc.GetTextExtent(strLine); //获取字符串文本信息 POINT pt; pt.x = OldPoint.x + sz.cx; pt.y = OldPoint.y; SetCaretPos(pt); //设置文本插入符为当前文本输出的最后 dc.TextOut(OldPoint.x, OldPoint.y, strLine); //输出文本 CView::OnChar(nChar, nRepCnt, nFlags); }
相关文章推荐
- MFC基本图形的绘制(三)在SDI中实现绘图操作
- MFC 基本操作 --修改对话框、静态文本背景颜色
- MFC一天一练 ---- 基本的文本操作
- MFC实现数据库的基本操作
- MFC通过获取菜单句柄,实现菜单的基本操作
- 大连实训之基于MFC对数据库的基本操作(功能实现)
- Redis缓存系统(一)Java-Jedis操作Redis,基本操作以及 实现对象保存
- QT实现对数据文本保存的办法及其操作
- Hibernate(二)实现数据库的基本操作及相关api
- vb sql server创建数据库实现增、删、改、查等基本操作
- 栈和队列的基本操作实现
- MapReduce实现基本SQL操作的原理
- 实验一线性表的基本操作实现及其应用
- 链表基本操作的程序实现(转2)
- c语言实现顺序表的基本操作
- 基本的缓存类操作封装(实现类)
- MapReduce实现基本SQL操作的原理-join和group by,以及Dinstinct
- 用链表实现带菜单功能的一元多项式的基本操作 (Use linked list to realize the basic operation of a one-dimensional polynom)
- [C#]实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- 《大话数据结构》读书笔记之线性表基本操作(单链表实现)