MFC画图教程.
- 格式:ppt
- 大小:1.41 MB
- 文档页数:31


1、建立工程,并向工程中添加图像类.he文件和.cpp文件。例如将DIB.h和DIB.cpp,一般都要成对添加
2、在doc.h头文件添加图像类头文件(#include”DIB.h”),并在文档类(doc类)建立存图像类的变量,例如:
public:
CDIB m_Dib;
3、doc文档类添加OnOpenDocumen函数,并编辑函数如下:
BOOL CLianDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// TODO: Add your specialized creation code here
m_Dib.Read_8BitsGray_Image(lpszPathName);
m_Dib.MakePalette();
return TRUE;
}
加黑的代码是我们添加的。该函数的意思是通过打开文档,获取图像的路径。
4、在view类添加图像类变量指针,并包含图形类头文件(DIB.h),如:
public:
CDIB *pDib; 5、在view类添加消息相应函数 ***view::OnPain(),并编辑代码如下:
void CTestno3View::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CTestno3Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
BeginWaitCursor();
/********************显示图像*******************/
mfc drawtext参数
MFC(Microsoft Foundation Class)是微软公司提供的用于开发Windows应用程序的类库。其中的绘图功能可以通过CDC类来实现,而DrawText函数则是CDC类中用于在设备上绘制文本的函数之一。DrawText函数的参数包括:
1. lpchText,要绘制的文本字符串,是一个以NULL结尾的字符串。
2. nCount,要绘制的字符数,如果为-1,则函数将假定字符串以NULL字符结尾。
3. lpRect,指定文本绘制矩形的指针,文本将在该矩形内进行绘制。
4. uFormat:指定文本的格式,包括对齐方式、换行方式等。可以是以下值的组合:
DT_BOTTOM,文本垂直居中对齐。
DT_CALCRECT,计算绘制文本所需的矩形大小,而不实际绘制文本。
DT_CENTER,文本水平居中对齐。
DT_EDITCONTROL,适用于编辑控件。
DT_END_ELLIPSIS,在文本太长时以省略号结束。
DT_EXPANDTABS,扩展制表符。
DT_EXTERNALLEADING,添加行间距。
DT_LEFT,文本左对齐。
DT_MODIFYSTRING,修改lpchText指向的字符串,使其适应指定的格式。
DT_NOCLIP,文本不被裁剪。
DT_NOPREFIX,忽略“&”字符。
DT_RIGHT,文本右对齐。
DT_RTLREADING,从右到左的文本阅读顺序。
DT_SINGLELINE,单行文本。
DT_TABSTOP,制表符的宽度。
DT_TOP,文本垂直顶部对齐。
1 目录
第1章 VC++和MFC的基本介绍.
1.1VC++6.0介绍.................................................................................3
1.2 MFC介绍........................................................................................4
第2章 基本功能
2.1创建单文档......................................................................................5
2.2添加成员变量..................................................................................6
2.3新建工具栏......................................................................................6
2.4编辑菜单..........................................................................................9
2.5建立相应类向导.............................................................................10
2.6添加消息函数.................................................................................15
第3章 简易画图板的制作
SDI 和 MDI 程序中对非客户区(标题栏、左右下边界)的美化
基本思路是重载 CMainFrame 类的 DefWindowProc()函数,并判断消息为:
WM_NCPAINT,WM_NCACTIVATE,WM_NOTIFY的时候,调用自己的绘制窗口标题栏的函
数。用 GetSystemMetrics(SM_CSFRAME)和 GetSystemMetrics(SM_CYFRAME)可以取得标
题栏的左上角的坐标。最大化,最小化的按钮自己画,如果不是在标准的位置,一定要记录
下他们的位置,并且在 WM_NCLBUTTONDOWN消息处理函数中判断是否是点击了按钮,
以做出相应的处理。系统图标也可以自己重新画。
主要任务有贴图(包括标题栏、左边界、右边界、下边界、系统图标、最大化、最小化、
关闭按钮)、处理消息(屏蔽系统自带按钮、双击状态栏改变大小、鼠标停放在三个自绘按
钮上时改变按钮图标、单击自绘按钮时作出相应反应)。
一、响应的消息及重载的函数
响应的消息及重载的函数都在 CMainFrame 类中。响应 DefWindowProc 函数,在其中
判断消息是不是 WM_NCPAINT、WM_MOVE、WM_NCACTIVATE、WM_NOTIFY,若是则
重画标题栏、左框架、右框架、下框架、最大化、最小化、关闭按钮(放在一个函数里)。
响应消息 WM_NCHITTEST,使鼠标位于自绘按钮时返回相应 hittest 值,同时屏蔽自带
按钮的鼠标事件。简言之,当鼠标位于自绘按钮时,让 系统误以为鼠标位于相应按钮,
而当鼠标位于系统自带按钮时,让系统误以为鼠标只是位于标题栏。自绘图标与之类似,不
再赘述。
响应消息 WM_NCMOUSEMOVE,判断光标是不是位于自绘最大化、最小化、关闭按钮
区域,如是则重画相应的按钮。