Cximage 读取图像

分析:1. 从文件路径中获取图像文件的格式(字符串);2. 根据图像的格式打开图像;

 

Stopwatch(0)
Image = new image(filename, type);
Stopwatch(1)
...
UpdateStatusBar();// 在状态栏中显示某项处理所花费的时间,及图像的一些其它信息;
1. 状态栏地址的获取
首先,状态栏是在主框架上的,而主框架是由CMainFrame类来管理的;事实上CMainFrame类中的m_wndStatusBar就是状态栏的对象。
CStatusBar &statusBar =
(CMainFrame*)(AfxGetApp()->m_pMainWnd)->GetStatusBar();
此处GetStatusBar()为自己定义的内联函数:
Inline CStatusBar* GetStatusBar(){return &m_wndStatusBar;}

UpdateAllViews(NULL,WM_USER_NEWIMAGE);
2. WM_USER_NEWIMAGE是自定义消息;该段代码是更新所有的视图类,并向各个视图类发送消息WM_USER_NEWIMAGE; 跟踪该消息可以发现它的消息处理函数是视图类中的:OnNewImage;它实现的功能更新视图跟状态栏。

CDemoDoc *NewDoc=(CDemoDoc*)((CDemoApp*)AfxGetApp())->demoTemplate
->OpenDocumentFile(NULL);
3. 该语句的功能是生成一份文件;它包含着MFC许多重要的理解:
侯俊杰的《深入浅出MFC》中说:Document, View, Frame是由Document Template来管理的。事实上我们可以这么来理解:
CMultiDocTemplate* pDocTemplate;
pDocTemplate = newCMultiDocTemplate(...);
AddDocTemplate(pDocTemplate);
前条语句只是负责创建CMyDoc, CMyView和CChildFrame类,并将确定这几个类之间的关系,后一条语句是将文档模板加入系统。当我们调用下面这条语句时:
CDocument* CMultiDocTemplate::OpenDocumentFile(...)
才是真正开始创建CMyDoc, CMyView和CChildFrame类的对象;而它们是调用RUNTIME_CLASS宏来动态创建的,这就意味着它们是使用new在栈上创建的,它们的生命周期跟应用程序的生命周期是相同的;通过这个函数的返回值(即文档类对象的指针)我就可以对这三个对象进行处理。

注:Document, View, Frame是由Document Template来管理的,而Document Templaet 是由类CDocTemplat来实现的;CDocTemplat类是一个抽象类(至少含有一个纯虚函数的类,只能作为派生类的模型,不能被实例化),因而它有两个派生类 CMultiDocTemplate 和 CSingleDocTemplate。前者可以创建多个文档模板来实现打开多种类型的文件,后者只能打开一种类型的文件。最后,值得一提的是Document Template是由CWinApp的一个对象指针,来管理的;这个对象指针就是:CDocManager* m_pDocManager。

前面搞清楚了文档、视图和子框架对象的创建以及它们之间关系的确立;既然它们之间存在某种关系,那么就应该存在相应的接口来相互通信;这可以参见下面网址:
http://www.vckbase.com/document/viewdoc/?id=658#A1

附录:函数统计
CString类:
1. CString::MakeLower:将字符串转换为小写字母的字符串;
2. Void CString::Format(...):以指定的格式将数据写入到字符串中;
3. CString CString::Mid(j) const:返回从j位置开始到字符串结束的个子串;

CxImage类:
1. CxImage::CxImage(filename, type)
2. Bool CxImage::IsValid() const:检查图像是否被正确初始化;
3. Const char* CxImage::GetLastError():返回最终的错误;
4. Long CxImage::GetNumFrames() const:返回文件中包含的图像数量(比如.gif图像一般由几张场景相似的图片组合而成);
5. Void CxImage::SetFrame(long nFrame):设置图像的序列,后面将会调用load来加载它;
6. Bool CxImage::Load(filename, type):从磁盘中加载图像;一般是在CxImage对象构造时没有加载图像的情况下,使用该函数来加载图像;
7. DWORD CxImage::GetType() const:返回图像的格式;

CDocTemplate类
1. CDocTemplate::OpenDocumentFile(NULL):创建一个新的文档,并且文档的类型与CDocTemplate相一致;

CDocument 类
CDocument::SetTitle:设置文档的标题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值