引言
本文致力于提供MFC的相关知识,以方便大家更好地认识MFC的使用方法。介绍将会分为以下几个部分:MFC初始文件的理解、MFC我们所使用的框架理解、MFC的进阶用法、MFC我在使用过程中遇到的问题及解决方法。
MFC初始文件的理解
MFC的初始文件中有两项文件是我们经常需要使用的,其余文件可以暂时忽略,我们基本不会用上。一个是MFCApplicationView,我们简称View类,一个是MFCApplicationDoc,我们简称Doc类。
Doc类是Document的缩写,是用来处理程序与计算机文件的关系的,我们读取、保存文件就是通过这个类实现的,我们如果想要获取读取的图像信息,也都是通过Doc类进行读取的。例如以下这个我们常用的代码段。
CMFCApplication1Doc* pDoc = GetDocument();// 获取文档 //////////////////////////////////////////////////////////////////////////////////////////
long lSrcLineBytes; //图象每行的字节数
long lSrcWidth; //图象的宽度和高度
long lSrcHeight;
int lpSrcBitCount; //图像的位深
LPSTR lpSrcDib; //指向源图象的指针
LPSTR lpSrcStartBits; //指向源像素的指针
lpSrcDib = (LPSTR) ::GlobalLock((HGLOBAL)pDoc->GetHObject());// 锁定DIB
if (!lpSrcDib) return;
/*
if (pDoc->m_dib.GetColorNum(lpSrcDib) != 256)// 判断是否是8-bpp位图
{
AfxMessageBox(L"对不起,不是256色位图!");// 警告
::GlobalUnlock((HGLOBAL) pDoc->GetHObject());// 解除锁定
return; //返回
} //判断是否是8-bpp位图,不是则返回
*/
lpSrcStartBits = pDoc->m_dib.GetBits(lpSrcDib); // 找到DIB图象像素起始位置
lSrcWidth = pDoc->m_dib.GetWidth(lpSrcDib); // 获取图象的宽度
lSrcHeight = pDoc->m_dib.GetHeight(lpSrcDib); // 获取图象的高度
lpSrcBitCount = pDoc->m_dib.GetBitCount(lpSrcDib); //获取图像位深
lSrcLineBytes = pDoc->m_dib.GetReqByteWidth(lSrcWidth * lpSrcBitCount); // 计算图象每行的字节数
///////////////////////////////////////////////////////////////////////////////////////////

本文深入浅出地介绍了MFC的基础知识,包括MFC初始文件理解,如View类与Doc类的区别,以及MFC框架的使用。讲解了如何处理程序与文件的关系,以及用户交互。此外,探讨了MFC的进阶用法,如UpdateData()函数、等待光标操作和图像预览技巧。同时,文章也分享了在MFC开发中遇到的问题及解决方案。
最低0.47元/天 解锁文章
607





