1、3.4.1 建立应用程序框架使用MFC App Wizard创建图像处理应用程序基本框架:从“文件”菜单中选择“新建”菜单项,弹出“新建”对话框。选择“工程”选项卡,从项目类型中选择MFC App Wizard(.exe),在“工程名称”文本框中输入项目名称,设为本人姓名。在MFC App Wizard-Step1对话框中选择MDI用户界面和中文中国。在MFC App Wizard-Step6对话框中将CDipView类的基类改为CScrollView以支持试图滚动。其他项采用默认值。单击完成按钮,再单击“确定”按钮,MFC App Wizard将自动生成图像处理程序的各个源文件。(7)将”m
2、ageErrors.h”、”DibObject.h”、”DibObject.cpp”、”ImageLoad.dll”、”ImageLoad.h”、”ImageLoad.lib”六个文件复制到当前工程目录中。(8)选择VC+集成开发环境的“工程增加到工程文件“菜单项,系统打开“插入文件到工程“对话框。选择”DibObject.h”、”DibObject.cpp”、”ImageLoad.lib”文件,单击”确定“将这两个文件添加到当前工程中。3.4.2添加消息映射函数为应用程序类CZouJieApp带有的“文件新建”“文件打开”菜单项添加消息映射处理函数。使用MFC App Wizard分别为ID
3、_FILE_NEW和ID_FILE_OPEN两个菜单命令消息添加“OnFileNew”和“OnFileOpen”函数。3.4.3改写OnFileOpen函数以打开图像文件在ZouJie.cpp文件头部添加如下代码:注意:szFilter中不能包含任何空格,并且szFilter声明为全局变量。3.4.4添加CZouJieObject类对象成员变量文档类CZouJieDoc负责维护文档的具体数据,因此在该类中声明两个公有型的成员变量如下:另外,声明的指针型变量还应在类的构造函数和析构函数中正确地初始化和释放。为此在CZouJieDoc类的构造函数和析构函数中添加如下代码:当删除了指针所指向的对象时
4、,相应的指针本身并没有删除,此时指针变量本身的值指向何处是个未知数,因此将其复制为NULL。在“StdAfx.h”文件中添加如下代码:3.4.5为CZouJieDoc文档类映射消息处理函数使用MFC App Wizard分别为ID_FILE_NEW、ID_FILE_OPEN、ID_FILE_SAVE_AS菜单命令消息添加消息映射处理函数OnFileNew()、OnFileOpen()和OnFileSaveAs()函数。(1)ID_FILE_NEW消息处理函数什么都不做不添加代码;(2)ID_FILE_OPEN消息处理函数代码如下:在此再一次使用了数组szFilter,但它并不在“ZouJieDoc.h”和“ZouJieDoc.cpp”两个文件中声明,因此,需要在“ZouJieDoc.cpp”头部添加如下声明信息:成员函数ReadImgToDoc()负责读入图像对象文件,其声明与实现文件如下:在文档类CZouJieDoc中添加如下成员变量代码:在“ZouJieDoc.cpp”文件中添加如下代码:(3)ID_FILE_SAVEA消息处理函数代码如下:3.4.6绘制读入的图像具体的图像绘制任务是在CZouJieView视图类成员函数CZouJieView:OnDraw中完成的,其代码如下: