关于排版的小软件的实现

项目需用MFC搭框架,结合GDIPlus实现文本处理原型。从文件读入字符流用List保存,按字体绘制文字,超界面加滚动条。要处理键盘移动、鼠标单击,初始化插入符号,还有单位转换等功能,Undo/redo后续再考虑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目描述可以见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——
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值