📄 -
字号:
本程序所用压缩函数库在子目录zipfunc中,在zipfunc目录下,有两个子目录分别包含Release版和Debug版的zipfunc.lib,两者都是共享链接库编译生成.同样,主程序的链接也必须用共享链接库设置.如要生成静态链接库程序,则必须重新编译zipfunc.lib,使之也生成静态链接库文件.
主工程中的CZip类和CUnZip类,是直接使用压缩库函数构造的.编译后不需要额外的文件支持.
具体可见工程设置中的Link选项和C++ ->Preprocessor -> Additional include directories选项以及CZip类和CUnZip类的头文件.
ZipFunc.lib是WinZip的原版.独立使用CZip类压缩出来的文件完全可以用WinZip来解压缩,一点问题也没有.
新版程序支持文件关联,具体代码见CNoteApp类的初始化函数和CNoteDlg类的初始化函数.为了方便期间,本程序没有使用注册表编程.文件关联的实现可以对生成的数据文件使用打开方式关联,一次就OK了.
新版程序还改变了存储策略,使其更节省存储空间。具体步骤如下:
一.存储函数(savetree):
1.读节点信息,把节点的基本信息(item_info)读到暂时文件1中(先不压缩).如是文档节点,则把其内容压缩后,再添加到暂时文件2中,这时该文档节点基本信息结构(item_info)的数据成员dwOffset的值,是该文档内容(已压缩)在暂时文件2中的起始位置,而不是在最终保存文件中的起始位置(这一点与前两了版本不同).
2.节点读完后,压缩保存节点基本信息的暂时文件1.获得该压缩文件的length.
3.填充文件头结构FILE_HEADER的各成员数据.其中dwDocOffset项值为sizeof(FILE_HEADER)+length.
4.打开要保存的文件,写入文件头.
5.写入节点基本信息暂时文件1的压缩文件.
6.写入暂时文件2.
二.读取函数(OpenTree):
1.读文件头,判别文件格式.
2.把节点基本信息的压缩数据读到已暂时文件中,然后解压缩.
3.构造树,如遇到文档节点,则填充结构DOC_INFO,根据上面的说明,该结构的数据成员dwOffset的值应为,item_info.dwOffset+file_header.dwDocOffset.然后把该结构加入到队列m_arDoc中.
如有疑问,可发e-mail至:baohaobo@yahoo.com.cn
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -