最新可视化编程课件02.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《最新可视化编程课件02.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 可视化 编程 课件 02
- 资源描述:
-
1、2编辑区编辑区工作区工作区输出区输出区9n编译(Compile)n链接(Link)n执行(Execute)n调试(Debug)工具按钮工具按钮10nDebugger可以完成的工作:设置断点单步执行代码监视变量、寄存器和内存查看汇编代码和调用堆栈修改代码和变量值11nStart DebugGoStep IntoStep OverStep OutnBreak Point12例例2-12-113n项目(Project)由多个源、头文件组成,以及系统提供的函数支持,编译时有很多特殊选择,例如版本、优化、链接库等n项目内容存在项目文件中,由它对整个程序进行统一管理。不同版本文件后缀不同,Visual C
2、+5.0以上为“.dsp”14n版本类型Debug版本产生调试信息,便于程序调试与运行Release版本不产生调试信息,代码简短且经过优化,程序执行效率较高15nBuild菜单Batch Build16n项目文件类型*.dsp 项目中所有内容*.dsw 工作区中所有项目*.clw ClassWizard信息*.rc 资源描述信息Resource.h 所有资源符号定义StdAfx.h和.cpp 建立预编译头文件/res 各种资源存放的目录17nMFC是C+语言的安全子集,也是一个应用程序框架,简化Windows编程难度nMFC类是以层次结构组织,封装大部分Windows API和控件n当前MFC
3、版本包含100多个类,可实现应用程序的大部分功能18n根类(CObject)n应用程序结构类(CCmdTarget、CWinThread、CWinApp、CDocument)n可视对象类(CWnd、CView、CMenu、CDialog、控件类、CControlBar、CGdiObject)n通用类(CFile、CException、CArray)19n根类CObjectCObject是MFC抽象基类,多数MFC类与用户自定义类的根类,提供编程所需的公共操作,例如对象建立与删除n应用程序类CWinAppCWinApp是MFC应用程序基类,每个程序只有一个程序对象,该类是从CWinApp派生,提
4、供程序相关操作,例如初始化、运行与终止20nCWinApp类的继承关系CCmdTarget:MFC消息映射基类CWinThread:MFC线程操作基类21nCWinApp类的公有成员函数 函数名函数名 功能功能 InitInstance 初始化应用程序 Run 启动默认的消息循环 ExitInstance 终止应用程序 LoadCursor 向应用程序加载光标 LoadIcon 向应用程序加载图标 DoMessageBox 弹出一个消息框 OpenDocumentFile 打开一个文档对象 CloseAllDocuments 关闭所有打开的文档对象22n文档与视图文档对象由文档模板创建,管理应
5、用程序的数据,包括文档创建、打开与保存n文档模板及基类:CDocTemplate:文档模板基类CSingleDocTemplate:SDI文档模板CMultiDocTemplate:MDI文档模板CDocument:专用文档基类23n窗口类CWndCWnd类是MFC窗口基类,实现不同类型窗口nCWnd派生类CFrameWnd:单文档框架窗口类CMIDFrameWnd:多文档主框架窗口类CMIDChildWnd:多文档子框架窗口类24n视图类CViewCView类是MFC视图基类,实现框架窗口中的客户区25nCView派生类 派生类名派生类名 功能功能 CScrollView 带滚动条的视图 C
6、CtrlView 带树状列表框控件的视图 CEditView 带文本编辑器的视图 CFormView 基于表单模板的视图 CListView 带列表框控件的视图 CRecordView 可显示数据库记录的视图 CRichEditView 带格式文本编辑器的视图 CPreviewView 支持打印预览的视图26n菜单类CMenuCMenu类是MFC菜单类,实现菜单界面n对话框类CDialogCFileDialog:文件存取对话框CColorDialog:颜色选择对话框CFontDialog:字体选择对话框CPrintDialog:文件打印对话框CFindReplaceDialog:文本查找对话框
7、27n控件类 控件类名控件类名 功能功能 控件类名控件类名 功能功能 CStatic 文本 CHotKeyCtrl 热键 CEdit 编辑框 CRichEditCtrl 格式编辑框 CScrollBar 滚动条 CProgressCtrl 进度条 CSlideCtrl 游标 CSpinButtonCtrl 双向箭头 CComboBox 组合框 CBitmapButton 位图按钮 CListBox 列表框 CAnimateCtrl 动画显示 CButton 按钮 CToolTipCtrl 弹出式窗口28n控件条类CControlBarCControlBar是控件栏基类,实现工具条、状态条与浮动
8、对话框nCControlBar派生类CStatusBar:状态条CToolBar:带位图按钮的工具条CDialogBar:控件条形式的浮动对话框29n绘图对象类CGdiObjectCGdiObject是GDI基类,实现绘图对象nCGdiObject派生类CBitmap:位图操作接口CBrush:画刷CFont:字体CPalette:调色板CPen:画笔CRgn:椭圆或多边型域30n设备描述环境类CDC主要用来实现窗口绘制nCDC派生类CPaintDC:绘图设备描述环境CClientDC:客户区的设备描述环境CWindowDC:窗口的设备描述环境CMetaFileDC:元文件的设备描述环境31n
9、文件类CFileCFile类是文件访问基类,实现文件输入与输出操作nCFile派生类CMemFile:驻内存文件访问接口CStdioFile:缓存流式文件访问接口nCArchive类CFile类通常由CArchive间接访问32n异常类CExceptionCNotSupportException:不支持异常CMemoryException:内存异常CFileException:文件异常CResourceException:资源异常COleException:OLE异常CDBException:数据库异常CUserException:用户操作异常33n模板收集类CArray:将数据存储到数组CL
10、ist:将数据存储到链表CMap:关键字与数据的映射34nOLE是对象链接与嵌入,对象服务体系结构普通类:COleDocument、COleItem客户类:COleClientDoc、COleClientItem服务类:COleServer、COleTemplate可视编辑容器类:COleLinkingDoc数据传输类:COleDropSource、COleTarget、COleDataSource、COleDataObject对话类:COleInsertDialog35nODBC类是MFC数据库访问类,可访问支持ODBC的数据库系统,完成查询、更新等操作CDatabase:连接数据源CRec
11、ordset:数据源的一组记录CRecordView:记录的表单视图CFieldExchange:支持记录字段交换CLongBinary:存储二进制对象句柄36n以Afx为前缀的函数 函数名函数名 功能功能 AfxAbort 终止一个应用程序 AfxBeginThread 创建并执行一个线程 AfxEndThread 终止正在执行的线程 AfxMessageBox 弹出一个消息框 AfxGetApp 返回当前应用程序对象的指针 AfxGetInstanceHandle 返回当前应用程序对象的句柄 AfxRegisterWndClass 注册一个窗口类37第1步:应用程序类型 第2步:数据库支持
12、例例2-22-238第3步:OLE与ActiveX 第4步:用户界面39第5步:应用程序风格 第6步:MFC类选择40nSingle DocumentnNo DatabasenNo OLEnTool BarnStatus BarnSystem Button 41例例2-32-3nWindows程序核心是CWinApp42nTest.cpp CTestApp theAppBOOL CTestApp:InitInstance()nWinMain.cpp pThread-InitInstance()nReturnCode=pThread-Run()AfxWinTerm()4344n每次启动新的应用程
13、序,WinMain函数都调用InitInstance()创建并注册文档模板 CSingleDocTemplate CSingleDocTemplate*pDocTemplate;pDocTemplate;pDocTemplate=new CSingleDocTemplate(pDocTemplate=new CSingleDocTemplate(IDR_MAINFRAME,IDR_MAINFRAME,RUNTIME_CLASS(CTestDoc),RUNTIME_CLASS(CTestDoc),RUNTIME_CLASS(CMainFrame),RUNTIME_CLASS(CMainFrame
14、),RUNTIME_CLASS(CTestView);RUNTIME_CLASS(CTestView);AddDocTemplate(pDocTemplate);AddDocTemplate(pDocTemplate);45装载标准文件选项创建主边框窗口 CMainFrame CMainFrame*pMainFrame=new CMainFrame;pMainFrame=new CMainFrame;if(!pMainFrame-LoadFrame(IDR_MAINFRAME)if(!pMainFrame-LoadFrame(IDR_MAINFRAME)return FALSE;return
15、FALSE;m_pMainWnd=pMainFrame;m_pMainWnd=pMainFrame;pMainFrame-ShowWindow(m_nCmdShow);pMainFrame-ShowWindow(m_nCmdShow);pMainFrame-UpdateWindow();pMainFrame-UpdateWindow();46nInitInstance():初始化应用程序nRun():启动消息循环nOnIdle():空闲处理nExitInstance():终止应用程序47n文档模板用于存放与文档、视图和边框窗口相关的信息CSingleDocTemplate 单文档模板CMult
16、iDocTemplate 多文档模板n传递给C*DocTemplate的资源符号串,包括7个参数,每个参数用n隔开,用GetDocString可获得每个参数48 参数名参数名 含义含义 WindowTitle 标题栏中的应用程序名 DocName 默认文件名的固定部分 FileNewName 文档类型的名字(多文档情况)FilterName 文档类型和通配符过滤器的描述 FilterExt 文档文件的扩展名 RegFileTypeId 注册表中登记的文档类型 RegFileTypeName 注册表中登记的文档类型名n资源符号串4950n消息处理机制是Windows核心,它是应用程序运行的动力来
17、源n消息是系统定义的32位值,它唯一定义一个事件,向Windows系统发出一个通知,告诉应用程序某个事件发生51nPeekMessage:查看消息队列,只起检测作用nGetMessage:查看消息队列,将消息移走nPreTranslateMessage:TranslateMessage的预处理函数nTranslateMessage:将虚拟键转化为字符码,例如Shift+8*nDispatchMessage:消息分发到消息处理函数52/TestView.h/TestView.hclass CTestView:public CViewclass CTestView:public CView pro
18、tected:protected:/AFX_MSG(CTestView)/AFX_MSG(CTestView)afx_msg void OnLButtonDown(UINT nFlags,CPoint point);afx_msg void OnLButtonDown(UINT nFlags,CPoint point);afx_msg void OnEditPaste();afx_msg void OnEditPaste();/AFX_MSG /AFX_MSG DECLARE_MESSAGE_MAP();DECLARE_MESSAGE_MAP();/TestView./TestView.cpp
19、cppBEGIN_MESSAGE_MAP(CTestView,CView)BEGIN_MESSAGE_MAP(CTestView,CView)/AFX_MSG_MAP(CTestView)/AFX_MSG_MAP(CTestView)ON_WM_LBUTTONDOWN()ON_WM_LBUTTONDOWN()ON_COMMAND(ID_EDIT_PASTE,OnEditPaste)ON_COMMAND(ID_EDIT_PASTE,OnEditPaste)/AFX_MSG_MAP /AFX_MSG_MAPEND_MESSAGE_MAP()END_MESSAGE_MAP()53n在CTestVie
20、w:OnDraw()中例例2-42-4 pDC-TextOut(20,20,Hello World!);pDC-TextOut(20,20,Hello World!);pDC-SelectStockObject(GRAY_BRUSH);pDC-SelectStockObject(GRAY_BRUSH);pDC-Ellipse(20,50,100,130);pDC-Ellipse(20,50,100,130);54n鼠标控制消息CDC CDC*pDC=GetDC();pDC=GetDC();pDC-TextOut(point.x,point.y,Mouse Clicked!);pDC-TextO
21、ut(point.x,point.y,Mouse Clicked!);ReleaseDC(pDC);ReleaseDC(pDC);55n鼠标控制消息 CClientDC cDC(this);CClientDC cDC(this);cDC.TextOut(point.x,point.y,Mouse Clicked!);cDC.TextOut(point.x,point.y,Mouse Clicked!);56n菜单控制消息 CDC CDC*pDC=GetDC();pDC=GetDC();pDC-TextOut(20,120 pDC-TextOut(20,120,Menu Clicked!);,M
22、enu Clicked!);ReleaseDC(pDC);ReleaseDC(pDC);57n绘制一片绿色的叶子例例2-52-558void CMyTreeView:OnDraw(CDCvoid CMyTreeView:OnDraw(CDC*pDC)pDC)int nTotalPoints=32000;/int nTotalPoints=32000;/打印打印nTotalPointsnTotalPoints个点个点 CRect rect;CRect rect;GetClientRect(&rect);GetClientRect(&rect);int nX=rect.right/2;/(nX,n
23、Y)int nX=rect.right/2;/(nX,nY)记录树的根坐标记录树的根坐标 int nY=rect.bottomint nY=rect.bottom*5/6;5/6;int nScale=(rect.rightrect.bottom?rect.bottom:rect.right)/15;int nScale=(rect.rightrect.bottom?rect.bottom:rect.right)/15;COLORREF crColor=0 x00FF00;COLORREF crColor=0 x00FF00;double dX=0,dY=0;double dX=0,dY=0;
24、double dP;double dP;for(int i=0;inTotalPoints;i+)for(int i=0;inTotalPoints;i+)dP=1.0 dP=1.0*rand()/RAND_MAX;rand()/RAND_MAX;if(dP=0.01)if(dP0.01&dP0.01&dP0.86&dP0.86&dP0.93)if(dP0.93)dX=-0.20 dX=-0.20*dX+0.26dX+0.26*dY;dY;dY=0.44 dY=0.44*dX+0.12dX+0.12*dY+1.00;dY+1.00;pDC-SetPixel(nX+int(dX pDC-SetP
25、ixel(nX+int(dX*nScale),nY-int(dYnScale),nY-int(dY*nScale),crColor);nScale),crColor);60nWindows系统将各种事件以消息形式发送给目标,目标根据消息内容进行处理目标窗口 消息类型 参数wParam 参数lParam61n标准Windows消息窗口消息(WM_CREATE、WM_PAINT等)、鼠标消息(WM_LBUTTONDOWN、WM_MOUSEMOVE等)、键盘消息(WM_KEYDOWN、WM_CHAR等)、WM_TIMERn控件消息从控件传送给父窗口的消息n命令消息用户界面对象(包括菜单、工具栏、加速
展开阅读全文