MFC处理绘图(5篇)

时间:2019-05-12 21:19:01下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《MFC处理绘图》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《MFC处理绘图》。

第一篇:MFC处理绘图

(一)简单的图形输出、点: pDC->SetPixel(Cpoint(200,200),RGB(255,0,0,));// 在 [200,200] 的位置画一个红点2、线: pDC->MoveTo(0,0);// 直线起点的坐标为(0,0)

pDC->LineTo(100,100)// 从起点(0,0)到终点(100,100)画一条直线、矩形: Crect rect(0,0,100,100);

pDC->Rectangle(&rect);// 画一个长 100,宽 100 的矩形、圆和椭圆:

Crect rect(0,0,100,100);

pDC->Ellipse(&rect);

Crect rect(0,0,50,100);

pDC->Ellipse(&rect);、多边形:

CPoint poly[4];

poly[0]=CPoint(0,0);

poly[1]=CPoint(50,50);

poly[2]=Cpoint(50,100);

poly[3]=Cpoint(0,50);

pDC->Polygon(poly,4);

(二)库存对象

库存对象是由操作系统维护的用于绘制屏幕的常用对象,包括库存画笔、画刷、字体等。使用 SelectStockObject()函数可以直接选择库存对象,修改系统默认值。

例如,在视图中选用画笔和画刷库存对象来画图。

Void Cexam3_3View::OnDraw(CDC*pDC)

{

Cexam3_2Doc*pDoc=GetDocument();

CRect rect;

Rect.SetRect(Cpoint(0,0),Cpoint(200,200));

pDC->SelectStockObject(WHITE_PEN);// 选用白色画笔

pDC->SelectStockObject(GRAY_BRUSH);// 选用灰色画刷

pDC->Rectangle(rect);

pDC->MoveTo(0,0);

pDC->LineTo(200,200);

pDC->MoveTo(0,200);

pDC->LineTo(200,0);

}

(三)创建和使用自定义画刷和画笔、创建 CPen 的的方法:

•定义时直接创建

Cpen MyPen(PS_SOLID,2,RGB(255,0,0));

(2)定义 Cpen 对象,再调用 CreatePen()函数

Cpen pen;

Pen.CreatePen(PS_SOLID,2,RGB(255,0,0));、创建画刷的方法:

(1)创建实心画刷的 CreateSolidBrush()函数

Cbrush bs;

Bs.CreateSolidBrush(RGB(255,0,0));

(2)创建带阴影的画刷的 CreateHatchBrush()函数

Bs.CreateHatchBrush(HS_CROSS,RGB(255,0,0));// 创建一个带十字阴影的红色画刷

(3)创建位图画刷的 CreatePatternBrush()函数

本函数的应用如下:

CbitMap bmp;

Bmp.LoadBitMap(IDB_MYBITMAP);

Cbrush bs;

Bs.CreatePatternBrush(&bmp);

例4_

3、在视图中绘制三个图形,一个用阴影风格的画刷画的椭圆形,一个用深兰色实心画刷画的圆角矩形,一个用浅灰色画刷画的饼形。

void CExam4_3View::OnDraw(CDC* pDC)

{

CExam4_3Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

//设置影象模式

pDC->SetMapMode(MM_ANISOTROPIC);

CPen NewPen,OldPen;

//将画笔选入设备上下文

NewPen.CreatePen(PS_SOLID,5,RGB(0,0,255));

//创建深蓝色实心画刷

pDC->SelectObject(&NewPen);

CBrush NewBrush1,NewBrush2;

//将画刷选入设备上下文

NewBrush1.CreateSolidBrush(RGB(0,0,128));

//绘制圆角矩形

pDC->RoundRect(200,100,330,200,15,15);

//将库存对象浅灰画刷选入设备上下文

pDC->SelectStockObject(LTGRAY_BRUSH);

//绘制饼图

pDC->Pie(350,50,420,150,360,50,400,50);

//创建阴影画刷

NewBrush2.CreateHatchBrush(HS_DIAGCROSS,RGB(125,125,125));

pDC->SelectObject(NewBrush2);

//绘制椭圆

pDC->Ellipse(50,50,150,150);

}

第二篇:MFC经典绘图方法总结

MFC经典绘图方法总结

Windows 绘图的实质就是利用 windows提供的图形设备接口GDI(Graphics Device Interface)将图形会制在显示器上。

为了支持GDI绘图,MFC提供了两种重要的类:

设备上下文DC(Device Context)类,用于设置绘图属性和绘制图形;

绘图对象类,封装了各种GDI绘图对象,包括画笔、刷子、字体、位图、调色板和区域。

CDC类介绍: 在MFC中,CDC是设备上下文类的基类,派生类包括:CClientDC, CPaintDC, CWindowDC, CMetaFileDC类

CClientDC 客户区设备上下文,绘制客户区时

CPaintDC 一般发生在窗口需要重绘时

CWindwDC 可以绘制整个窗口,通常在窗口WM_NCPAINT消息的响应函数CWnd::OnNCPaint()中使用

CMetaFileDC 专门用于图元文件的绘制,图元文件记录一组GDI命令,重建图形输出。

CDC包含m_hDC和 m_hAttribDC二个设备上下文。CDC指导所有对m_hDC的输出GDI调用(SetTextColor)以及对m_hAttribDC的大部分属性GDI调用(GetTextColor)。

CDC对象的重要函数如下:

1、为指定设备创建上下文 virtual BOOL CreateDC(...)比如创建一个为屏幕的设备上下文

CDC dc;

dc.CreateDC(“DISPLAY”, NULL, NULL,NULL);

2、创建内存设备上下文,与指定设备上下文兼容 virtual BOOL CreateCompatibleDC(CDC * pDC)

3、删除CDC对象对应的Windows设备上下文, 通常不调用该函数而是使用析构程序 virtual BOOL DeleteDC();

4、将HDC句柄转化为设备上下文的句柄: CDC *pDC=CDC::FromHandle(hDC)

5、选择GDI对象入选到设备上下文中,一共有五种形式:

CPen * SelectObject(CPen * pPen);

CBrush * SelectObject(CBrush * pBrush);

virtual CFont * SelectObject(CFont * pFont);

CBitmap * SelectObject(CBitmap * pBitmap);

int SelectObject(CRgn * pRgn);

例: Cpen cpen;pen.CreatePen(PS_SOLID, 2, RGB(255,0,0));Cpen *pOldPen=(CPen*)pDC->SelectObject(&pen);//设置新画笔,记录旧画笔

....pDC->SelectObject(pOldPen);//还原

画笔

三种方法创建画笔

1/构造函数:

CPen();

CPen(int nPenStyle, int nWidth, COLORREF crColor);

CPen(...)略

2/CreatePen(int nPenStyle, int nWidth, COLORREF crColor)

3/CreatePenIndirect(LPLOGPEN lpLogpen)

typedef struct tagLOGPEN{

UINT lopnStyle;

POINT lopnWidth;

COLORREF lopnColor;

}LOGPEN, *LPLOGPEN;

例:

LOGPEN lppn;

lppn.lopnColor=RGB(255,0,0);

lppn.lopnStype=PS_DASHDOT;

lgpn.lopnWidth.x=2;

lgpn.lopnWidth.y=2;

CPen pen;pen.CreatePenIndirect(&lppn);

画刷

三种方法创建

1/构造函数:

CBrush();

CBrush(COLROREF crColor);

CBrush(int nIndex, COLORREF crColor);

nIndex 哪种类型的网格, HS_BDIAGONAL HS_CROSS

HS_VERTICAL

HS_HORIZONTAL

2/CreateSolidBrush(COLORREF crColor);

3/CreateHatchBrush(int nIndex , COLORREF crColor);

4/CreateBrushIndirect(const LOGBRUSH* lpLogBrush);

typedef struct tagBRUSH{

UINT lbStyle;

// BS_HATCHED, BS_SOLID , BS_NULL

COLORREF lopnColor;

LONG lbHatch;

//HS_BDIAGONAL HS_VERTICAL

HS_HORIZONTAL

}LOGBRUSH, *LPLOGBURSH;

例:

CRect Rect(0,0,200,200);

CBrush brush(HS_HORIZONTAL,RGB(0,255,0));

CBrush *pOldBursh=pDC->SelectObject(&brush);

pDC->Rectangle(Rect);

pDC->SelectObject(pOldBursh);图形绘制

1.点绘制

//返回RGB值

COLORREF SetPixel(int x, int y, COLORREF crColor);

COLORREF SetPixel(POINT point, COLORREF crColor);

//返回BOOL值,绘制是否成功.BOOL SetPixelV(int x, int y, COLORREF crColor);

BOOL SetPixelV(POINT point, COLORREF crColor);2.直线绘制

//返回CPoint对象的x和y坐标的前一次取值

CPoint MoveTo(int x, int y);

CPoint MoveTo(POINT point);

//返回绘制是否成功

BOOL MoveTo(int x, int y);

BOOL MoveTo(POINT point);

例:

CPen pen;pen.CreatePen(PS_SOLID,2,RGB(0,255,0));

HS_CROSS

CPen* oldPen =(CPen *)pDC->SelectObject(&pen);

CPoint oldPoint=pDC->MoveTo(600,300);

pDC->LineTo(500,500);

3.矩形绘制

1/矩形绘制

BOOL Rectangle(int x1, int y1, int x2, int y2);

BOOL Rectangle(LPRECT lpRect);

例:

pDC->SelectObject(oldPen);

pDC->Rectangle(0,0,600,300);

CRect Rect(0,0,300,200);

CBrush brush(HS_HORIZONTAL,RGB(0,255,0));

CBrush *pOldBursh=pDC->SelectObject(&brush);

pDC->Rectangle(&Rect);

pDC->SelectObject(pOldBursh);

例:

CPen pen;

pen.CreatePen(PS_DASH, 1,RGB(255,0,0));

LOGBRUSH lb;

memset(&lb,0, sizeof(lb));

lb.lbStyle=BS_HATCHED;

lb.lbHatch=HS_DIAGCROSS;

CBrush brush;

brush.CreateBrushIndirect(&lb);

CPen *pOldPen=(CPen *)pDC->SelectObject(& pen);

CBrush *pOldBrush=(CBrush*)pDC->SelectObject(&brush);

pDC->Rectangle(0,0,200,200);

pDC->SelectObject(pOldPen);

pDC->SelectObject(pOldBrush);

2/三维矩形线框绘制

void Draw3dRect(int x, int y, int cx, int cy , COLORREF clrTopLeft, COLORBEF clrBottomRight);

void Draw3dRect(LPCRECT lpRect, COLORREF clrTopLeft, COLORBEF clrBottomRight);

例:

pDC->Draw3dRect(100, 100, 200, 300, RGB(255,0,0), RGB(0,255,0));

3/表示焦点风格矩形

void DrawFocusRect(LPCRECT lpRect);

例:

CRect rt(400,400, 450, 450);

pDC->DrawFocusRect(&rt);

4/绘制拖曳形线框

void DrawDragRect(LPCRECT lpRect , SIZE size LPCRECT lpRectLast, SIZE sizeLast, CBrush* pBrush=NULL , CBrush* pBrushLast=NULL);

5/圆角矩形

void RoundRect(LPCRECT lpRect , POINT point);

//point.x 椭圆宽, point.y 椭圆高

void RoundRect(int x1, int y1, int x2, int y2,int x3, int y3);

例:

pDC->RoundRect(250, 250, 400, 400, 50, 100);

4.椭圆绘制

BOOL Ellipse(LPCRECT lpRect)//椭圆的外接矩形范围

文字绘制

TextOut函数

返回值是BOOL

BOOL TextOut(int x, int y, const CString & str);

virtual BOOL TextOut(int x, int y, LPCSTR lpszString, int nCount);

DrawText函数 返回值是文本高度

int DrawText(LPCSTR lpszString, int nCount, LPRECT lpRect, UNIT nFormat);

int DrawText(const CString& str, LPRECT lpRect, UNIT nFormat);

//DT_BOTTOM DT_LEFT...//注意:如果nFormat 参数指定了DT_CALCRECT标志,由lpRect指定的矩形将会更新,以反映显示文本需要的高度和宽度,但并不绘制显示

文字背景色和前景色

virtual COLORREF SetBKColor(COLORREF crColor);int SetBKMode(int nBKMode);// nBKMode: OPAQUE, TRANSPARENT时,SetBKColor失效

例:

CRect rect;GetClientRect(&rect);pDC->FillSolidRect(rect,RGB(0,0,255));CString strText=L“VC++ BKColor Demo...”;pDC->SetTextColor(RGB(255,255,255));pDC->SetBkColor(RGB(255,0,0));pDC->SetBkMode(TRANSPARENT);pDC->TextOut(10,10,strText);文字字体

设置文字的字体会使用到MFC下的CFont类,然后调用CFont类下的四个成员函数: CreateFont, CreateFontIndirect, CreatePointFont和 CreatePointFontIndirect,详见msdn帮助 例: 1/CreateFont 函数 CFont font;font.CreateFont(25, 0, 1800, 0, FW_BOLD, 1, 1, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH|FF_MODERN, L“Courier New”);CString strText=L“VC++ Font Demo...”;pDC->SetTextColor(RGB(255,0,0));CFont *pOldFont=(CFont*)pDC->SelectObject(&font);pDC->TextOut(210,210, strText);pDC->SelectObject(pOldFont);2/ CreateFontIndirect(const LOGFONT* lpLogFont);typedef struct tagLOGFONT{ //14个成员变量与世隔绝 CreateFont函数类似 }LOGFONT;3/如果只注重字体的高度和字体名时,使用CreatePointFont(int nPointSize, LPCSTR lpszFaceName, CDC* pDC=NULL);

位图显示

A:位图介绍,CBitmap类封装了Windows图形设备接口中的位图,并提供了操作位图的成员函数

1/创建兼容位图,使之与指定设备兼容.BOOL CreateCompatibleBitmap(CDC *pDC, int nWidth, int nHeight);

2/得到位图信息,作用是填充BITMAP结构.int GetBitmap(BITMAP * pBitMap);

3/加载位图资源,加载一个命名的位图资源来初始化位图对象.BOOL LoadBitmap(LPCSTR lpszResourceName);BOOL LoadBitmap(UINT nIDResuource);

B:显示位图,VC++提供 BitBlt, StretchBlt和 TransparentBit(需加入 msimg32.lib库)1/ BOOL BitBlt(int x , int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop);//尺寸不变

2/ BOOL StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop);//支持缩放

/* dwRop一般设置为SRCCOPY */ 3/ BOOL TransparentBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest,HDC hdcSrc, int nXoriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, UINT crTransparent);例:

CBitmap bitmap;bitmap.LoadBitmap(IDB_BITAMBOW);

BITMAP bm;bitmap.GetBitmap(&bm);

CDC MemDC;MemDC.CreateCompatibleDC(pDC);CBitmap* pOldBitmap=(CBitmap *)MemDC.SelectObject(&bitmap);

CRect rect(10,10, bm.bmWidth, bm.bmHeight);

TransparentBlt(pDC->GetSafeHdc(), rect.left, rect.top, rect.Width()*5, rect.Height()*5, MemDC.GetSafeHdc(), 0, 0, bm.bmWidth, bm.bmHeight, RGB(0,0,0));//长宽扩大5倍,图片中黑色的部分将作为透明处理

第三篇:MFC消息处理函数总结

1.AfxWndProc()该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWnd

Proc

2.AfxCallWndProc()该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应

用程序以后使用,然后调用WindowProc()函数

3.WindowProc()该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWin

dowProc()函数

4.OnWndMsg()该函数的功能首先按字节对消息进行排序,对于WM_COMMAND消息,调用OnCommand()消息响应函数,对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何被遗漏的消息将是一个窗口消息。OnWndMsg()函数搜索类的消息映像,以找到一个能处理任何窗口消息的处理函数。如果OnWndMsg()函数不能找到这样的处理函数的话,则把消

息返回到WindowProc()函数,由它将消息发送给DefWindowProc()函数

5.OnCommand()该函数查看这是不是一个控件通知(lParam参数不为NULL,如果lParam参数为空的话,说明该消息不是控件通知),如果它是,OnCommand()函数会试图将消息映射到制造通知的控件;如果他不是一个控件通知(或者如果控件拒绝映射的消息)OnCommand()

就会调用OnCmdMsg()函数

6.OnCmdMsg()根据接收消息的类,OnCmdMsg()函数将在一个称为命令传递(Command Routing)的过程中潜在的传递命令消息和控件通知。例如:如果拥有该窗口的类是一个框架类,则命令和通知消息也被传递到视图和文档类,并为该类寻找一个消息处理函数

MFC应用程序创建窗口的过程

1.PreCreateWindow()该函数是一个重载函数,在窗口被创建前,可以在该重载函数中改变

创建参数(可以设置窗口风格等等)

2.PreSubclassWindow()这也是一个重载函数,允许首先子分类一个窗口

3.OnGetMinMaxInfo()该函数为消息响应函数,响应的是WM_GETMINMAXINFO消息,允许设置窗口的最大或者最小尺寸

4.OnNcCreate()该函数也是一个消息响应函数,响应WM_NCCREATE消息,发送消息以告

诉窗口的客户区即将被创建

5.OnNcCalcSize()该函数也是消息响应函数,响应WM_NCCALCSIZE消息,作用是允许改

变窗口客户区大小

6.OnCreate()该函数也是一个消息响应函数,响应WM_CREATE消息,发送消息告诉一个

窗口已经被创建

7.OnSize()该函数也是一个消息响应函数,响应WM_SIZE消息,发送该消息以告诉该窗口

大小已经发生变化

8.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息说明窗口在移动

9.OnChildNotify()该函数为重载函数,作为部分消息映射被调用,告诉父窗口即将被告知一

个窗口刚刚被创建

MFC应用程序关闭窗口的顺序(非模态窗口)

1.OnClose()消息响应函数,响应窗口的WM_CLOSE消息,当关闭按钮被单击的时候发送

此消息

2.OnDestroy()消息响应函数,响应窗口的WM_DESTROY消息,当一个窗口将被销毁时,发送此消息

3.OnNcDestroy()消息响应函数,响应窗口的WM_NCDESTROY消息,当一个窗口被销毁

后发送此消息

4.PostNcDestroy()重载函数,作为处理OnNcDestroy()函数的最后动作,被CWnd调用

MFC应用程序中打开模式对话框的函数调用顺序

1.DoModal()重载函数,重载DoModal()成员函数

2.PreSubclassWindow()重载函数,允许首先子分类一个窗口

3.OnCreate()消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被

创建

4.OnSize()消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化

5.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息,以告诉窗口正在移动

6.OnSetFont()消息响应函数,响应WM_SETFONT消息,发送此消息,以允许改变对话框

中控件的字体

7.OnInitDialog()消息响应函数,响应WM_INITDIALOG消息,发送此消息以允许初始化对

话框中的控件,或者是创建新控件

8.OnShowWindow()消息响应函数,响应WM_SHOWWINDOW消息,该函数被ShowWind

ow()函数调用

9.OnCtlColor()消息响应函数,响应WM_CTLCOLOR消息,被父窗口发送已改变对话框或

对话框上面控件的颜色

10.OnChildNotify()重载函数,作为WM_CTLCOLOR消息的结果发送

MFC应用程序中关闭模式对话框的顺序

1.OnClose()消息响应函数,响应WM_CLOSE消息,当“关闭”按钮被单击的时候,该函数

被调用

2.OnKillFocus()消息响应函数,响应WM_KILLFOCUS消息,当一个窗口即将失去键盘输

入焦点以前被发送

3.OnDestroy()消息响应函数,响应WM_DESTROY消息,当一个窗口即将被销毁时,被发

4.OnNcDestroy()消息响应函数,响应WM_NCDESTROY消息,当一个窗口被销毁以后被

发送

5.PostNcDestroy()重载函数,作为处理OnNcDestroy()函数的最后动作被CWnd调用

打开无模式对话框的顺序

1.PreSubclassWindow()重载函数,允许用户首先子分类一个窗口

2.OnCreate()消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被

创建

3.OnSize()消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化

4.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息以告诉窗口正在移动

5.OnSetFont()消息响应函数,响应WM_SETFONT消息,发送此消息以允许改变对话框中

控件的字体

以上这些的执行都是按给定的顺序执行!

只有清楚的了解应用程序的执行顺序,才能在编写代码的时候知道,在什么时候应该执行什

么,以及在什么地方该处理什么!

这只是本人总结的一点小小的经验,希望能对MFC的初学者有所帮助!MFC应用程序中处

理消息的顺序

1.AfxWndProc()该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWnd

Proc

2.AfxCallWndProc()该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应

用程序以后使用,然后调用WindowProc()函数

3.WindowProc()该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWin

dowProc()函数

4.OnWndMsg()该函数的功能首先按字节对消息进行排序,对于WM_COMMAND消息,调用OnCommand()消息响应函数,对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何被遗漏的消息将是一个窗口消息。OnWndMsg()函数搜索类的消息映像,以找到一个能处理任何窗口消息的处理函数。如果OnWndMsg()函数不能找到这样的处理函数的话,则把消

息返回到WindowProc()函数,由它将消息发送给DefWindowProc()函数

5.OnCommand()该函数查看这是不是一个控件通知(lParam参数不为NULL,如果lParam参数为空的话,说明该消息不是控件通知),如果它是,OnCommand()函数会试图将消息映射到制造通知的控件;如果他不是一个控件通知(或者如果控件拒绝映射的消息)OnCommand()

就会调用OnCmdMsg()函数

6.OnCmdMsg()根据接收消息的类,OnCmdMsg()函数将在一个称为命令传递(Command Routing)的过程中潜在的传递命令消息和控件通知。例如:如果拥有该窗口的类是一个框架类,则命令和通知消息也被传递到视图和文档类,并为该类寻找一个消息处理函数

MFC应用程序创建窗口的过程

1.PreCreateWindow()该函数是一个重载函数,在窗口被创建前,可以在该重载函数中改变

创建参数(可以设置窗口风格等等)

2.PreSubclassWindow()这也是一个重载函数,允许首先子分类一个窗口

3.OnGetMinMaxInfo()该函数为消息响应函数,响应的是WM_GETMINMAXINFO消息,允许设置窗口的最大或者最小尺寸

4.OnNcCreate()该函数也是一个消息响应函数,响应WM_NCCREATE消息,发送消息以告

诉窗口的客户区即将被创建

5.OnNcCalcSize()该函数也是消息响应函数,响应WM_NCCALCSIZE消息,作用是允许改

变窗口客户区大小

6.OnCreate()该函数也是一个消息响应函数,响应WM_CREATE消息,发送消息告诉一个

窗口已经被创建

7.OnSize()该函数也是一个消息响应函数,响应WM_SIZE消息,发送该消息以告诉该窗口

大小已经发生变化

8.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息说明窗口在移动

9.OnChildNotify()该函数为重载函数,作为部分消息映射被调用,告诉父窗口即将被告知一

个窗口刚刚被创建

MFC应用程序关闭窗口的顺序(非模态窗口)

1.OnClose()消息响应函数,响应窗口的WM_CLOSE消息,当关闭按钮被单击的时候发送

此消息

2.OnDestroy()消息响应函数,响应窗口的WM_DESTROY消息,当一个窗口将被销毁时,发送此消息

3.OnNcDestroy()消息响应函数,响应窗口的WM_NCDESTROY消息,当一个窗口被销毁

后发送此消息

4.PostNcDestroy()重载函数,作为处理OnNcDestroy()函数的最后动作,被CWnd调用

MFC应用程序中打开模式对话框的函数调用顺序

1.DoModal()重载函数,重载DoModal()成员函数

2.PreSubclassWindow()重载函数,允许首先子分类一个窗口

3.OnCreate()消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被

创建

4.OnSize()消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化

5.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息,以告诉窗口正在移动

6.OnSetFont()消息响应函数,响应WM_SETFONT消息,发送此消息,以允许改变对话框

中控件的字体

7.OnInitDialog()消息响应函数,响应WM_INITDIALOG消息,发送此消息以允许初始化对

话框中的控件,或者是创建新控件

8.OnShowWindow()消息响应函数,响应WM_SHOWWINDOW消息,该函数被ShowWind

ow()函数调用

9.OnCtlColor()消息响应函数,响应WM_CTLCOLOR消息,被父窗口发送已改变对话框或

对话框上面控件的颜色

10.OnChildNotify()重载函数,作为WM_CTLCOLOR消息的结果发送

MFC应用程序中关闭模式对话框的顺序

1.OnClose()消息响应函数,响应WM_CLOSE消息,当“关闭”按钮被单击的时候,该函数

被调用

2.OnKillFocus()消息响应函数,响应WM_KILLFOCUS消息,当一个窗口即将失去键盘输

入焦点以前被发送

3.OnDestroy()消息响应函数,响应WM_DESTROY消息,当一个窗口即将被销毁时,被发

4.OnNcDestroy()消息响应函数,响应WM_NCDESTROY消息,当一个窗口被销毁以后被

发送

5.PostNcDestroy()重载函数,作为处理OnNcDestroy()函数的最后动作被CWnd调用

打开无模式对话框的顺序

1.PreSubclassWindow()重载函数,允许用户首先子分类一个窗口

2.OnCreate()消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被

创建

3.OnSize()消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化

4.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息以告诉窗口正在移动

5.OnSetFont()消息响应函数,响应WM_SETFONT消息,发送此消息以允许改变对话框中

控件的字体

评论(1)|阅读(570)|添加评论

第四篇:MFC应用程序中处理消息的顺序(模版)

MFC应用程序中处理消息的顺序

MFC应用程序中处理消息的顺序

1.AfxWndProc()该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc

2.AfxCallWndProc()该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数

3.WindowProc()该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数

4.OnWndMsg()该函数的功能首先按字节对消息进行排序,对于WM_COMMAND消息,调用OnCommand()消息响应函数,对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何被遗漏的消息将是一个窗口消息。OnWndMsg()函数搜索类的消息映像,以找到一个能处理任何窗口消息的处理函数。如果OnWndMsg()函数不能找到这样的处理函数的话,则把消息返回到WindowProc()函数,由它将消息发送给DefWindowProc()函数

5.OnCommand()该函数查看这是不是一个控件通知(lParam参数不为NULL,如果lParam参数为空的话,说明该消息不是控件通知),如果它是,OnCommand()函数会试图将消息映射到制造通知的控件;如果他不是一个控件通知(或者如果控件拒绝映射的消息)OnCommand()就会调用OnCmdMsg()函数

6.OnCmdMsg()根据接收消息的类,OnCmdMsg()函数将在一个称为命令传递(Command Routing)的过程中潜在的传递命令消息和控件通知。例如:如果拥有该窗口的类是一个框架类,则命令和通知消息也被传递到视图和文档类,并为该类寻找一个消息处理函数

MFC应用程序创建窗口的过程

1.PreCreateWindow()该函数是一个重载函数,在窗口被创建前,可以在该重载函数中改变创建参数(可以设置窗口风格等等)

2.PreSubclassWindow()这也是一个重载函数,允许首先子分类一个窗口

3.OnGetMinMaxInfo()该函数为消息响应函数,响应的是WM_GETMINMAXINFO消息,允许设置窗口的最大或者最小尺寸

4.OnNcCreate()该函数也是一个消息响应函数,响应WM_NCCREATE消息,发送消息以告诉窗口的客户区即将被创建

5.OnNcCalcSize()该函数也是消息响应函数,响应WM_NCCALCSIZE消息,作用是允许改变窗口客户区大小

6.OnCreate()该函数也是一个消息响应函数,响应WM_CREATE消息,发送消息告诉一个窗口已经被创建

7.OnSize()该函数也是一个消息响应函数,响应WM_SIZE消息,发送该消息以告诉该窗口大小已经发生变化

8.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息说明窗口在移动

9.OnChildNotify()该函数为重载函数,作为部分消息映射被调用,告诉父窗口即将被告知一个窗口刚刚被创建

MFC应用程序关闭窗口的顺序(非模态窗口)

1.OnClose()消息响应函数,响应窗口的WM_CLOSE消息,当关闭按钮被单击的时候发送此消息

2.OnDestroy()消息响应函数,响应窗口的WM_DESTROY消息,当一个窗口将被销毁时,发送此消息

3.OnNcDestroy()消息响应函数,响应窗口的WM_NCDESTROY消息,当一个窗口被销毁后发送此消息

4.PostNcDestroy()重载函数,作为处理OnNcDestroy()函数的最后动作,被CWnd调用MFC应用程序中打开模式对话框的函数调用顺序

1.DoModal()重载函数,重载DoModal()成员函数

2.PreSubclassWindow()重载函数,b31.org 允许首先子分类一个窗口

3.OnCreate()消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建

4.OnSize()消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化

5.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息,以告诉窗口正在移动

6.OnSetFont()消息响应函数,响应WM_SETFONT消息,发送此消息,以允许改变对话框中控件的字体

7.OnInitDialog()消息响应函数,响应WM_INITDIALOG消息,发送此消息以允许初始化对话框中的控件,或者是创建新控件

8.OnShowWindow()消息响应函数,响应WM_SHOWWINDOW消息,该函数被ShowWindow()函数调用

9.OnCtlColor()消息响应函数,响应WM_CTLCOLOR消息,被父窗口发送已改变对话框或对话框上面控件的颜色

10.OnChildNotify()重载函数,作为WM_CTLCOLOR消息的结果发送

MFC应用程序中关闭模式对话框的顺序

1.OnClose()消息响应函数,响应WM_CLOSE消息,当“关闭”按钮被单击的时候,该函数被调用

2.OnKillFocus()消息响应函数,响应WM_KILLFOCUS消息,当一个窗口即将失去键盘输入焦点以前被发送

3.OnDestroy()消息响应函数,响应WM_DESTROY消息,当一个窗口即将被销毁时,被发送

4.OnNcDestroy()消息响应函数,响应WM_NCDESTROY消息,当一个窗口被销毁以后被发送

5.PostNcDestroy()重载函数,作为处理OnNcDestroy()函数的最后动作被CWnd调用打开无模式对话框的顺序

1.PreSubclassWindow()重载函数,允许用户首先子分类一个窗口

2.OnCreate()消息响应函数,响应WM_CREATE消息,发送此消息以告诉一个窗口已经被创建

3.OnSize()消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小发生变化

4.OnMove()消息响应函数,响应WM_MOVE消息,发送此消息以告诉窗口正在移动

5.OnSetFont()消息响应函数,响应WM_SETFONT消息,发送此消息以允许改变对话框中控件的字体

以上这些的执行都是按给定的顺序执行!

只有清楚的了解应用程序的执行顺序,才能在编写代码的时候知道,在什么时候应该执行什么,以及在什么地方该处理什么!新濠天地娱乐城66bb.org

第五篇:MFC实践总结

mfc编程实验总结报告 知识总结+个人心得 2011年暑期mfc编程实验报告 mfc编程实验个人总结报告

一、mfc类、函数等知识小结:

1、settimer(1, m_intlevel, null);在mfc程序中settimer被封装在cwnd类中,调用就不用指定窗口句柄了于是settimer函数的原型变为: uint settimer(uint nidevent,uint nelapse,void(callback export *lpfntimer)(hwnd,uint ,yint ,dword))当使用settimer函数的时候,就会生成一个计时器。函数中nidevent指的是计时器的标识,也就是名字。nelapse指的是时间间隔,也就是每隔多长时间触发一次事件。第三个参数是一个回调函数,在这个函数里,放入你想要做的事情的代码,你可以将它设定为null,也就是使用系统默认的回调函数,系统默认认的是ontime函数。这个函数怎么生成的呢?你需要在需要计时器的类的生成ontime函数:在classwizard里,选择需要计时器的类,添加wm_time消息映射,就自动生成ontime函数了。然后在函数里添加代码,让代码实现功能。每隔一段时间就会自动执行一次。例: settimer(1,1000,null);1:计时器的名称;

1000:时间间隔,单位是毫秒; null:使用ontime函数。

当不需要计时器的时候调用killtimer(nidevent);例如:killtimer(1);killtimer(1);

2、typedef struct{};(1)struct{ int x;int y;}test1;好,定义了 结构 test1,test1.x 和 test1.y 可以在语句里用了。(2)struct test {int x;int y;}test1;定义了结构 test1,test1.x 和 test1.y 可以在语句里用了。

与(1)比,省写 了 test(3)typedef struct test {int x;int y;}text1,text2;此处时说了这种结构体(类型)别名 叫 text1 或叫 text2,而不是定义了结构体变量.真正在语句里用,还要写: text1 test1;//定义结构体变量

然后好用 test1.x test1.y 或写 text2 test1;//定义结构体变量

然后好用 test1.x test1.y

3、invalidate();//让客户区无效,即时重新绘制客户区 void invalidate(bool berase = true);该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时windows会在应用程序的消息队列中放置wm_paint消息。mfc为窗口类提供了wm_paint的消息处理函数onpaint,onpaint负责重绘窗口。视图类有一些例外,在视图类的onpaint函数中调用了ondraw函数,实际的重绘工作由ondraw来完成。参数berase为true时,重绘区域内的背景将被擦除,否则,背景将保持不变。

4、cdc::rectangle(左上x,左上y,右下x,右下y);使用该函数画一个矩形,可以用当前的画笔画矩形轮廓,用当前画刷进行填充。

函数原型:bool rectangle(hdc hdc, int nleftrect, int ntoprect, int nrightrect, int nbottomrect);

hdc:设备环境句柄。

nleftrect:指定矩形左上角的逻辑x坐标。ntoprect:指定矩形左上角的逻辑y坐标。nrightrect:指定矩形右下角的逻辑x坐标。nbottomrect:指定矩形右下角的逻辑y坐标。

5、cbrush:: cbrush//画刷类 eg:cbrush brushstick(rgb(127, 127, 127));四种构造函数: cbrush();cbrush(colorref crcolor);cbrush(int nindex, colorref crcolor);cbrush(cbitmap* pbitmap);参数说明: crcolor指定画刷的前景色(rgb方式)。如果画刷是阴影线型的,则指定阴影线的颜色。nindex指定画刷阴影线采用的风格,取值如下: hs_bdiagonal45度的向下影线(从左到右)hs_cross水平和垂直方向以网格线作出阴影 hs_diagcross 45度的网格线阴影 hs_fdiagonal 45度的向上阴影线(从左到右)

hs_horizontal 水平的阴影线 hs_vertical 垂直的阴影线 pbitmap指向cbitmap对象的指针,该对象指定了画刷要绘制的位

图。

构造函数说明:

6、messagebox(game over!);messagebox(null,text,title,button);参数title:string类型,指定消息对话框的标题。text:指定消息对话框中显示的消息,该参数可以是数值数据类型、字符串或boolean值。icon:icon枚举类型,可选项,指定要在该对话框左侧显示的图标。button:button枚举类型,可选项,指定显示在该对话框底部的按钮。default:数值型,可选项,指定作为缺省按钮的按钮编号,按钮编号自左向右依次计数,缺省值为1,如果该参数指定的编号超过了显示的按钮个数,那么messagebox()函数将使用缺省值返回值integer。函数执行成功时返回用户选择的按钮编号(例如1、2、3等),发生错误时返回-1。如果任何参数的值为null,messagebox()函数返回null。

函数原型:

messagebox.show(text,title,messageboxbuttons,messageboxicon ,messageboxdefaultbuttons)参数说明:

(1)text:必选项,消息框的正文。

(2)title:可选项,消息框的标题。(3)messageboxbuttons:可选项,消息框的按钮设置,默认只显示【确定】按钮。ok――确定 okcancel――确定和取消 abortretryignore――终止、重试和忽略 yesnocancel――是、否和取消 yesno――是和否 retrycancel――重试和取消

(4)messageboxicon:对话框中显示的图标样式,默认不显示任何图标。

question――问号 information、asterisk――i号 error、stop、hand――错误号 warning、exclamation――!号 none――不显示任何图标

(5)messageboxdefaultbuttons:可选项,对话框中默认选中的按钮设置。

defaultbutton1――第1个button是默认按钮 defaultbutton2――第2个button是默认按钮 defaultbutton3――第3个button是默认按钮

7、memcpy(拷贝目的地,拷贝对象,拷贝长度);包含在头文件#include

函数原型:

extern void *memcpy(void *destin, void *source, unsigned n);功能:

由source指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始地址的空间内。eg: int a=5,b=9;memcpy(a,b,sizeof(a));//将b按位拷给a;说明:

1.source和destin所指内存区域不能重叠,函数返回指向destin的指针。2.与strcpy相比,memcpy并不是遇到就结束,而是一定会拷贝完n个字节。篇三:mfc个人心得体会 mfc个人心得体会 06a13526 余思远

时间过得很快,历时一个月的短学期即将结束,我们小组的mfc课题也基本完成。虽然只有短短的一个月,但却带给我很多。在小组成员的共同努力下,基本解决了计划中的一个个问题,要实现一个功能并不算复杂的计算器,也没有想象中那么简单。mfc涉及的概念很多,语法也与以前有些许不同,在c++基础上新增的内容也有许多。从开始编辑一个简单的界面,通过这段时间的学习,终于感到掌握了些许了,但想更加熟练的使用,也必须付出更多的时间吧。我发现在编程过程中,并不能只想着眼前所负责的这一块,许多对许多综合多方面进行考虑,需要与自己队友进行配合,作出合理的计划和安排。

实践是检验真理的唯一标准,这次mfc的实践活动,让我学习到了很多知识,弥补了很多漏洞。这个看似简单对我们来说却付出了很多时间和精力的程序,让我体会到了mfc相比与单纯的c++的优越性。程序编译过程中的有些困难虽然我们的能力范围内也无法解决,但是在网上资料的参考,读懂他人资料、相关程序的基础上,我们也完成了这个程序。相信这个经历能对以后的编程有很大的帮助。我也从此次课程设计中体会到了团队合作的乐趣和力量。在一个团队中扬长避短,发挥自己应有的作用,能让我们更加容易地去克服一个又一个难关。篇四:c++(mfc)程序设计实践报告

中南大学

本科生课程设计(实践)任务书、设计报告

(c++语言程序设计)题 目 学生姓名 指导教师 学 院 专业班级 学生学号

计算机基础教学实验中心

年 月 日

目 录

设计任务书?3 课程实践报告4

一、实践内容??4

二、实践成果??4

三、程序功能??4

四、设计思路??5

五、源程序???7

六、运行情况??13

七、实践心得??16

八、实践收获与不足???18 c++语言程序设计任务书

指导老师:李力

课程编号:

一、学时与学分

学时:40 学分:2

二、实践目的计算机实践是本科计算机基础教学的一个重要环节。它对于巩固学生的计算机基础知识,增强学生的计算机应用水平,改善学生的知识结构,具有重要意义。

三、实践任务与要求

用c++语言编程。编程题目如下:

(一)统计一个班(最多有35人)的学生成绩,要求能实现如下功能:(1)输入每个学生的学号和6门课程的成绩。(2)计算每个学生的平均分和总分。(3)按总分从高到低排出名次,并按名次输出每个学生的情况,包括学号、各科成绩、平均分和总分。(4)根据用户要求输出某门课程(从键盘输入课程号)成绩在90分以上(含90分)且总分在前5名的学生情况,包括学号、各科成绩、平均分和总分。(5)根据统计,绘制总成绩五分制百分比饼图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类来实现,学生学号和成绩采用文件输入,排序。数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。

(二)统计商品销售数据,要求能用菜单实现如下功能:(1)输入每件商品的名称,编号,入库日期,标价,成本。(2)输入每件商品的售价,出售日期。(3)按总销售量从高到低排出每种商品的名称,售出件数,销售额。(4)根据用户要求输出某商品某月(从键盘输入商品名称和月份)的平均售价、售出件数、总利润。(5)根据统计,绘制商品销售利润百分比饼图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。

(三)统计足球比赛数据,要求能用菜单实现如下功能:(1)输入每场比赛的主队名称,客队名称,比赛日期,主队得分,客队得分。(2)按总得分从高到低排出每个队的名称,总得分,胜,和,负的次数。(3)根据用户要求输出某队某月(从键盘输入队名和月份)的所有比赛数据。(4)根据用户要求输出某队主场总得分,客场总得分(5)根据用户输入,绘制某队成绩历史趋势图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类实现,数据采

用文件输入,排序。数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。

(四)统计稿件管理数据,要求能用菜单实现如下功能:(1)输入每件稿件的第一作者名字,稿件名称,投稿日期,作者的省份。(2)输入每件稿件的发表日期,审稿意见。(3)按作者的省份,从高到低排出每个省的总发表篇数。(4)根据用户要求输出某作者某月(从键盘输入作者名和月份)的所有稿件数据。(5)根据用户输入,绘制稿件按省份的百分比饼图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。数据的组织可采用对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。

(五)统计用电管理数据,要求能用菜单实现如下功能:(1)输入每个电表的用户名,楼栋号,抄表日期,电表读数。(3)按作者的用电量,从高到低排出每个用户的总用电量。(3)根据用户要求输出某用户某月(从键盘输入用户名和月份)的总用电量。(4)统计某楼栋从某月到某月(从键盘输入)的总用电量(5)绘制按的楼栋的用电百分比饼图。(自学利用c++提供的库函数绘制曲线图)。要求:利用类实现,数据采用文件输入,排序。数据的组织对象数组。查阅相关资料并写出系统设计说明书。写出实践报告。

以上五题任选一题。

四、实践纪律

学生除了要遵守实践期间学院的基本规定外,还要求做到: 1.必须在规定的时间、地点,独立完成以上任务; 2.不得迟到、早退。尤其不得擅自缺席。

五、设计报告要求

1. 任务书必须作为报告第一页 2. 报告不得少于3000字:主要总结实践心得、实践成果、程序功能、设计思路(程序流程图)、源程序(加上必要的注释)、运行情况、课程设计的收获与不足等

六、时间安排

两周时间

七、成绩评定规则

成绩分为优、良、中、及格、不及格五等。

优:程序功能完备,报告有深度, 遵守实践纪律。

良:程序功能满足要求,报告有内容, 遵守实践纪律。

中:程序和报告基本满足要求, 遵守实践纪律。

及格:程序有错误但大体能运行,有报告书,基本遵守实践纪律。

不及格:程序完全错误或严重违反实践纪律。c++语言程序设计报告

一、实践内容

统计稿件管理数据,要求能用菜单实现如下功能:(1)输入每件稿件的第一作者名字,稿件名称,投稿日期,作者的省份。(2)输入每件稿件的发表日期,审稿意见。(3)按作者的省份,从高到低排出每个省的总发表篇数。(4)根据用户要求输出某作者某月(从键盘输入作者名和月份)的所有稿件数据。(5)根据用户输入,绘制稿件按省份的百分比饼图。(自学利用c++提供的库函数绘制曲线图)。

二、实践成果

灵活运用《c++程序设计》课程所学的基础知识,独立设计大型程序的能力;该程序必须用户界面友好、操作简洁方便,大大提高工作效率。

此程序先由用户输入数据,并存储。再作各种功能处理。整个程序基本可以实现稿件管理数据系统的统计。

三、程序功能 a)录入功能:可以写入关于稿件的基本信息,并进行以下几项功能。b)排序功能:用户可按作者的省份,将每个省的总发表篇数进行排序,并

输出。

c)查询功能:用户可根据作者与月份查出某作者某月的稿件数据,没找到的给予提示。d)绘制饼状图功能:系统根据输入的数据绘制高价男生份的百分比饼图。e)各项退出功能:在每个环节里都设有退出功能。

四、设计思路

统计稿件管理数据系统程序框图篇五:mfc心得 mfc学习心得

时光如梭,不知不觉短学期已经结束一个月左右了。对于mfc,这种c++的高级应用,从陌生到熟悉,从茫然到大致了解,从不屑一顾到很感兴趣,在编写飞行棋这个游戏的过程中感触良多,也收获了许多。mfc跟以前的控制台编程有比较大的差异,实现了部分可视化编程。对于其中复杂的类和函数,刚开始的时候感到相当的恐慌。虽然在暑假的时候有看过一些书,但到真正做起来却仍然觉得很吃力。第一次上mfc的课,老师一下子讲了很多东西,主要是控件,对于如此繁复的知识感觉一片茫然。整个理论课上了四节,虽然老师也讲了一些东西,但是对于我们要做的系统却是远远不够的。所以,很多东西都需要我们自学,到图书馆借书,到网上查找资料,问同学,问老师……我们使用各种方法获取知识。

必须学会自学,这是短学期的编程课带给我的一大感触。虽然我们需要做的只是一个小型的游戏,但对于初次接触窗口编程的我们难度依然是非常大了。但是,我们克服了,通过我们的团结协作。

要学会团结协作是我另一大感触。小组中各个组员的通力合作是编程工作能够顺利进行的一大关键,我们进行了明确的分工,却又能互相合作,互相参考,互相帮助。只有这样,才会有最后的飞行棋游戏新鲜出炉。

在编程过程中,我主要负责的部分是图形设计和界面美化部分。这部分的特点是:既与大一所学的控制台编程紧密联系,又必须要和现在所学的窗口程序编程相衔接。代码基本上靠逐行输入,考验的是自己的逻辑思维能力和严谨态度。其实,这部分的代码并不是特别多,所以编写代码的工作也并不是很难的。最磨练人的耐性的是将写好的代码进行调试。由于程序长度相对于原来的编程根本不属于同一个数量级,所以调试理所当然地变得痛苦起来。并且,这些代码基本上在编译时都能够一次通过,但在实际运行时却老是出错,检查算法和语法又不得要领。这个时候,就不得不耐着性子,用调试工具逐行调试了。学会了一些调试技巧,这不得不说是编程过程中我的一大收获。很久以前,我认为程序就是在头脑中思考一下就立即ok,而且程序先写出来再说, 然后再改就是,人的认识总是慢慢前进的!经过了短学期的编码和试验,彻底打破了以前的一些思维,其实程序只是人的思维的体现而已,因而重要的是思想,所以在构架整体框架的时候,先写一些程序验证是很必要的,而在程序开发的过程中,其如果对工程不是很了解的阶段,也只能算是在为整体框架做必要的验证,所以一般的工程的周期长于我们想象的那样!尽管mfc这门课程已经结束了,但是我还会继续学习下去,希望自己将来能够对编程有更加深入的了解。

下载MFC处理绘图(5篇)word格式文档
下载MFC处理绘图(5篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    Mfc个人心得体会

    Mfc个人心得体会 06a13526 余思远 时间过得很快,历时一个月的短学期即将结束,我们小组的mfc课题也基本完成。虽然只有短短的一个月,但却带给我很多。在小组成员的共同努力下,基......

    MFC个人心得

    MFC个人心得在四周时间里完成一个MFC的一个项目,个人觉得还是比较宽裕的,我们在第一周确立了项目的软件功能和名称,我们借鉴手机上RSS软件的广泛应用,想要通过MFC编写一个PC端的......

    MFC编程学习心得

    //1、将C语言变量简单重新定义 UINT、INT(32位,4字节) LONG、DWORD(32位,4字节) WPARAM、LPARAM(32位,4字节) SHORT、WORD(16位,2字节) LONG、LRESULT BOOL(TRUE、FALSE) PINT PSTR、 LPS......

    04 - 简单绘图范文合集

    Lesson 4 一、消息映射机制 1.消息响应函数:(例:在CDrawView类响应鼠标左键按下消息) 1)在头文件(DrawView.h)中声明消息响应函数原型。 //{{AFX_MSG(CDrawView)//注释宏 afx_msg......

    绘图总结

    绘图总结 一、总结 (1)图形的对称行,绘画中心线,节省大量的时间和图纸干净整洁。 (2)图层的线粗分明,查看图纸的时候,比较清晰,尤其对折弯线的辨别。 (3)绘画三视图,体现高平齐宽......

    MFC音乐播放器(实验报告)

    音乐播放器大型实验报告 一、实验目的 通过动手制作基于VC++的音乐播放器,了解播放器的原理。并通过自己动手,在windows播放器组件的基础上,用自己的算法,去实现自己的界面和自......

    MFC编程讲稿(二)

    一、打字功能 1.加入数据成员 选择ClassView,双击CMyView,光标直接停留在类CMyView的定义处。 在类CMyView中加入如下部分: class CMyView : public CView { protected: // crea......

    MFC规则DLL总结

    MFC规则DLL总结 1、 创建MFC规则DLL工程,生成XX.h, XX.cpp, XX.def文件,插入资源(对话框),生成类。 2、 在XX.cpp 中添加ShowDlg函数,在该函数中定义对话框,显示对话框,对话框所需要......