项目描述可以见8月22日的工作日志
Zhuyie老大对我说,先实现出一个原形,然后通过不断的重构来完善软件。
以下就是要实现的功能和一些细节:
1、 用MFC搭好的框架,实现也基本用MFC+GDIPlus
2、 从文件读入字符流,应该要有个字符缓存(目前的实现是将文件全部读入内存,用List来保存),应该在list中保存字符串,长度,最后提供出list的长度和最长字符串的长度,以备排版加滚动条用。通过“\n”来决定分行,是否加入行号还要考虑。至于\t的考虑,根据对tab宽度的设计,在读入字符时判断,加入几个空格
3、 根据字体,大小,按行绘制文字,如果超过界面大小,应该加入滚动条(应该考虑滚动条和插入符的位置,不能让插入符看不见,即滚动条应该随着插入符而动)。字体使用Font类(GDI+),构造函数中可以选择单位,现在定的单位是UnitPoint,1/72英寸,这样好以后换算成twip,即20twips。字体选择使用Font Dialog Box。
4、 对键盘上下左右移动的相应,按字移动(没解决的问题就是英文字符和汉字混在一起的时候,就是全角和半角的问题),可以见msdn,在Using Carets最后一个例子。根据当前光标的位置,推算出应该操作的字符,才能实现插入和删除以及回车的动作(把行从list中揪出来处理,考虑好这个模块的设计),在这之后进行重画(应该有个重画模块,除了使用clear()函数,是否有重绘一行的函数)
5、 捕捉鼠标的单击,这也需要一个模块,单击后迅速定位插入符号,放在字前or字后
6、 已开始应该初始化好插入符号,高度要与字体大小相同,并显示在首行首列
7、 单位转换模块,点和1/72inch之间的转换
8、 Undo/redo在实现了以上问题后,再做考虑
补充的以后再添加
——end——