C++学习笔记八

字符的输入思路设计过程

捕获键盘按下消息WM_CHAR,在消息响应函数中输出字符。利用TextOut视觉暂留,用字符串实现。

具体实现过程

  1. 让光标跟随鼠标用函数SetCaretPos(point)
  2. 光标重新定位后的字符串清空,利用字符串CString类的成员函数Empty实现;
  3. 鼠标单击点即是字符输出的新坐标点,需要保存下来;
  4. 回车换行的处理,插入符的横坐标不变,纵坐标需要加上当前字体的高度,利用GetTextMetrics函数实现
  5. 退格键的处理,先把字体设置为背景色,然后删除相应的字符,再重新输出。GetBkColor可以获得背景颜色,CString类的Left函数可以保留从左边数字符串中指定个数的字符。
  6. 插入符的跟随处理,获得字符的宽度,然后设定插入符位置即可。
  7. CDC类SelectObject类可以将设置的GDI对象选入设备描述表,同时返回值是先前的一个值(不管是颜色还是字体
  8. 普通按键就显示就可以了。

存在的问题

  1. 回车符只能换行,但是不能换行到一行的开始;(设计为横坐标为0就可以)
  2. 退回符当在一行开关时,按一次并不能退回到上一行末尾;(先消色,再删除,曾显示过的地方与没有显示的地方还是不一样的)

总结

总之,这是一个相对简陋的文字处理程序(试验程序),功能还没差,但是基本的东西(字符的显示光标的跟随字体颜色的设置等)在里边了。

更强大的话可以用:CEditViewCRichEditView

C++学习笔记八

点赞