字符的输入思路设计过程
捕获键盘按下消息WM_CHAR
,在消息响应函数中输出字符。利用TextOut
和视觉暂留
,用字符串实现。
具体实现过程
- 让光标跟随鼠标用函数
SetCaretPos(point)
; - 光标重新定位后的字符串清空,利用字符串
CString类
的成员函数Empty实现; - 鼠标单击点即是字符输出的新坐标点,需要保存下来;
- 回车换行的处理,插入符的横坐标不变,纵坐标需要加上当前字体的高度,利用
GetTextMetrics
函数实现 - 退格键的处理,先把字体设置为背景色,然后删除相应的字符,再重新输出。
GetBkColor
可以获得背景颜色,CString类
的Left函数可以保留从左边数字符串中指定个数的字符。 - 插入符的跟随处理,获得字符的宽度,然后设定插入符位置即可。
CDC类
的SelectObject类
可以将设置的GDI对象选入设备描述表,同时返回值是先前的一个值(不管是颜色还是字体)- 普通按键就显示就可以了。
存在的问题
- 回车符只能换行,但是不能换行到一行的开始;(设计为横坐标为0就可以)
- 退回符当在一行开关时,按一次并不能退回到上一行末尾;(先消色,再删除,曾显示过的地方与没有显示的地方还是不一样的)
总结
总之,这是一个相对简陋的文字处理程序(试验程序),功能还没差,但是基本的东西(字符的显示、光标的跟随、字体、颜色的设置等)在里边了。
更强大的话可以用:CEditView
和CRichEditView
类