由于CExampleDoc和CExampleView支持的是对应TXT文件的文档类和视图类,为了使程序支持BMP文件的显示,我们还需要为BMP信建文档类CBMPDoc和视图类CBMPView。
在example.cpp中包含头文件:
#include "BMPDocument.h" #include "BMPView.h" |
再在CExampleApp::InitInstance函数添加一个对应BMP格式的文档模板:
pDocTemplate = new CMultiDocTemplate( //IDR_EXAMPLTYPE, IDR_BMPTYPE, RUNTIME_CLASS(CBMPDocument), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CBMPView)); AddDocTemplate(pDocTemplate); |
这个时候再点击程序的"新建"菜单,将弹出如图7.3的对话框让用户选择新建文件的具体类型,这就是在应用程序中包含多个文档模板后出现的现象。
 图7.3 包含多个文档模板后的"新建" |
这个时候再点击"打开"菜单,将弹出如图7.4的对话框让用户选择打开文件的具体类型,这也是在应用程序中包含多个文档模板后出现的现象。
 图7.4 包含多个文档模板后的"打开" |
对于新添加的视图类CBMPView,我们需要重载其GetDocument()函数:
class CBMPView : public CView { … CBMPDocument* GetDocument(); //头文件中声明 … } //重载CBMPView::GetDocument函数 CBMPDocument* CBMPView::GetDocument() { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CBMPDocument))); return (CBMPDocument*)m_pDocument; } |
而CBMPView::OnDraw则利用第三方类CDib来完成图形的绘制:
void CBMPView::OnDraw(CDC* pDC) { CBMPDocument* pDoc = GetDocument(); // TODO: add draw code here CDib dib; dib.Load(pDoc->GetPathName()); dib.SetPalette(pDC); dib.Draw(pDC); } |
我们打开李连杰主演电影《霍元甲》的剧照,将呈现如图7.5的界面,这证明程序已经支持位图文件了。
 图7.5 打开位图的界面 |
其实,在这个程序中,我们已经可以同时打开位图和文本文件了(图7.6)。
 图7.6 同时打开位图和文本的界面 |
 
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
2/2 首页 上一页 1 2 |