欢迎来到天天文库
浏览记录
ID:16112242
大小:831.01 KB
页数:138页
时间:2018-08-08
《vc编程实例教学ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章VisualC++编程实例10.1MFC编程流程10.2常用MFC类和消息处理10.3对话框的应用10.4菜单的应用10.5工具栏应用10.1MFC编程流程在普通的C/C++程序中,可以看到程序从main函数开始到结束的所有代码,但在VisualC++中MFC封装了一部分类,同时也隐藏了一部分代码,因此我们看不到源程序的所有代码,例如从项目的所有源文件中找不到main函数。基本对话框的MFC程序流程图如图10-1所示。图10-1一个MFC程序运行的一般过程如下:(1)生成CwinApp的一
2、个实例(调用CwinApp的构造函数),初始化全局对象;(2)Win32入口程序函数WinMain调用函数AfxWinMain;(3)AfxWinMain调用函数CwinApp的成员函数InitInstance;(4)AfxWinMain调用函数CwinApp的成员函数Run;(5)AfxWinMain函数返回到WinMain,WimMain结束,程序结束。例10-1吹泡泡程序。每当用户在窗口客户区中按下鼠标左键时即可产生一个泡泡(彩色圆形)。设计思路:显示一个泡泡所需的数据包括其位置和大小,在M
3、FC中可用其包含矩形表示。可设置一数组,每当用户按下鼠标左键时,就产生一个泡泡的数据并存入数组中。最后,由框架窗口类的OnPaint()函数显示所有的泡泡。#include#defineMAX_BUBBLE250classCMyWnd:publicCFrameWnd{CRectm_rectBubble[MAX_BUBBLE];intm_nBubbleCount;public:CMyWnd(){m_nBubbleCount=0;}protected:afx_msgvoidOnLB
4、uttonDown(UINTnFlags,CPointpoint);afx_msgvoidOnPaint();DECLARE_MESSAGE_MAP()};//消息映射BEGIN_MESSAGE_MAP(CMyWnd,CFrameWnd)ON_WM_LBUTTONDOWN()ON_WM_PAINT()END_MESSAGE_MAP()//框架窗口类的成员函数voidCMyWnd::OnLButtonDown(UINTnFlags,CPointpoint){if(m_nBubbleCount5、_BUBBLE){intr=rand()%50+10;CRectrect(point.x-r,point.y-r,point.x+r,point.y+r);m_rectBubble[m_nBubbleCount]=rect;m_nBubbleCount++;InvalidateRect(rect,FALSE);}}voidCMyWnd::OnPaint(){CPaintDCdc(this);CBrushbrushNew;CPenpenNew;brushNew.CreateSolidBrush(RG6、B(rand()%255,rand()%255,rand()%255));penNew.CreatePen(PS_SOLID,1,RGB(255,0,0));dc.SelectObject(&brushNew);dc.SelectObject(&penNew);for(inti=0;i7、};BOOLCMyApp::InitInstance(){CMyWnd*pFrame=newCMyWnd;pFrame->Create(0,_T("吹彩色泡泡"));pFrame->ShowWindow(m_nCmdShow);this->m_pMainWnd=pFrame;returnTRUE;}CMyAppThisApp;//全局应用程序对象按【Ctrl+F5】运行程序,运行结果如图10-2所示。说明:该程序声明了两个类,一个是由应用程序类CwinApp派生出来的CmyApp类,一个是由框架窗8、口CframeWnd类派生出来的CmyWnd类。MFC的基本类名均以字母C打头,习惯上在为使用MFC编写的应用程序中的类起名时也这样做。在程序中还声明了一个CmyWnd类的全局对象ThisApp。图10-2在CmyWnd类中声明了一个数组成员m_rectBubble,用于存放泡泡的数据;另外,还声明了一个整型数据成员m_nBubbleCount,用来存放数组中泡泡的实际数量。在框架窗口类的构造函数中该成员变量被初始化为0,由于构造函数非常简单,因此使用了内联函数的形式。OnPain
5、_BUBBLE){intr=rand()%50+10;CRectrect(point.x-r,point.y-r,point.x+r,point.y+r);m_rectBubble[m_nBubbleCount]=rect;m_nBubbleCount++;InvalidateRect(rect,FALSE);}}voidCMyWnd::OnPaint(){CPaintDCdc(this);CBrushbrushNew;CPenpenNew;brushNew.CreateSolidBrush(RG
6、B(rand()%255,rand()%255,rand()%255));penNew.CreatePen(PS_SOLID,1,RGB(255,0,0));dc.SelectObject(&brushNew);dc.SelectObject(&penNew);for(inti=0;i7、};BOOLCMyApp::InitInstance(){CMyWnd*pFrame=newCMyWnd;pFrame->Create(0,_T("吹彩色泡泡"));pFrame->ShowWindow(m_nCmdShow);this->m_pMainWnd=pFrame;returnTRUE;}CMyAppThisApp;//全局应用程序对象按【Ctrl+F5】运行程序,运行结果如图10-2所示。说明:该程序声明了两个类,一个是由应用程序类CwinApp派生出来的CmyApp类,一个是由框架窗8、口CframeWnd类派生出来的CmyWnd类。MFC的基本类名均以字母C打头,习惯上在为使用MFC编写的应用程序中的类起名时也这样做。在程序中还声明了一个CmyWnd类的全局对象ThisApp。图10-2在CmyWnd类中声明了一个数组成员m_rectBubble,用于存放泡泡的数据;另外,还声明了一个整型数据成员m_nBubbleCount,用来存放数组中泡泡的实际数量。在框架窗口类的构造函数中该成员变量被初始化为0,由于构造函数非常简单,因此使用了内联函数的形式。OnPain
7、};BOOLCMyApp::InitInstance(){CMyWnd*pFrame=newCMyWnd;pFrame->Create(0,_T("吹彩色泡泡"));pFrame->ShowWindow(m_nCmdShow);this->m_pMainWnd=pFrame;returnTRUE;}CMyAppThisApp;//全局应用程序对象按【Ctrl+F5】运行程序,运行结果如图10-2所示。说明:该程序声明了两个类,一个是由应用程序类CwinApp派生出来的CmyApp类,一个是由框架窗
8、口CframeWnd类派生出来的CmyWnd类。MFC的基本类名均以字母C打头,习惯上在为使用MFC编写的应用程序中的类起名时也这样做。在程序中还声明了一个CmyWnd类的全局对象ThisApp。图10-2在CmyWnd类中声明了一个数组成员m_rectBubble,用于存放泡泡的数据;另外,还声明了一个整型数据成员m_nBubbleCount,用来存放数组中泡泡的实际数量。在框架窗口类的构造函数中该成员变量被初始化为0,由于构造函数非常简单,因此使用了内联函数的形式。OnPain
此文档下载收益归作者所有