Windows编程技术教程.ppt_第1页
Windows编程技术教程.ppt_第2页
Windows编程技术教程.ppt_第3页
Windows编程技术教程.ppt_第4页
Windows编程技术教程.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Windows编程技术,教材及参考书目,教材:刘小石等编著,精通VisualC+6.0,清华大学出版社2002JeffProsise著,MFCWindows程序设计(第2版),清华大学出版社,2001参考书目:林俊杰编著,VisualC+2005程序设计,清华大学出版社,2006.11DavidJ.Kruglinski著,VisualC+技术内幕(第四版),清华大学出版社,1999王艳平著,Windows程序设计,人民邮电出版社,2005尤晋元、史美林等著,Windows操作系统原理,机械工业出版社,2001,2,课程的基本目标,1)介绍windows编程的特点、内部机制和实现技术2)掌握微软基础类库(MFC)及其工作方式3)培养学生分析问题、解决问题的基本能力,通过实例提高学生进行实际编程的能力4)掌握包括用户界面、文档视图、绘图、模板集合、数据库、网络、动态链接库、多线程等高级程序设计5)开发工具:VC+6.0、VC+2005等,3,基本概念,Windows资料来源:MSDN(MicrosoftDeveloperNetwork)微软程序员开发网络,包含了编程信息、技术论文、文档、工具、程序代码以及新产品的Beta测试包。MSDN也包含相应版本的SDK工具。MFC(MicrosoftFoundationClassLibrary)微软基础类库AFX(ApplicationFrameworkExtension)微软应用程序框架扩展如:MFC的全局函数多数以Afx为前缀AfxGetApp,AfxMessageboxSDK(SoftwareDevelopmentKit)软件开发工具箱,提供开发Windows应用程序必要的文档、头文件和例子代码VC+60自带的SDK(1998)更新:http:/msdownloadplatformsdksdkupdateIDE(IntegratedDevelopmentenvironment)集成开发环境是一种集编辑、编译、连接、调试于一体的图形人机界面软件开发平台,SDKSoftwareDevelopmentKitAPIApplicationProgrammingInterfaceMFCMicrosoftFoundationClasses,4,5,Windows应用程序与操作系统的关系,6,7,Win32API,USER32.DLL:负责处理用户接口GDI32.DLL:负责在图形设备上执行绘图操作KERNEL32.DLL:操作系统核心功能服务COMCTL32.DLL:通用控件库COMDLG32.DLL:公共对话框SHELL32.DLL:用户界面外壳DIBENG.DLL:图形引擎NETAPI32.DLL:网络,8,语言的演化,1967年贝尔实验室的RichardMartin开发出BCPL语言。KenThompson改进为B。1972年贝尔实验室的DennisRitchie为开发Unix由B语言设计出C语言,1989年成为美国标准ANSIC(ANSI1989),1999年成为国际标准ISOC(ISO/IEC1999)1980年贝尔实验室的BjarneStroustrup在Simula67的启发下,将C语言扩展为带类的C(CwithClasses),1983年将其命名为C+,1998年C+成为国际标准(ISO/IEC1998)1995年,在C+的基础上创建了一门新的语言Oak,Sun简化和完善Oak推出Java语言2000.Microsoft作为.Net计划的一部分推出类似于Java的C#语言,9,MFC的发展趋势,MFC1.0(MicrosoftC/C+7.0)C+界面使用WindowsAPI.包括通用类:List,arrayandmap.UsefulandefficientstringclassTime,dateclassesFileaccessclassesObjectdiskstoragerootobject为基础的类层次结构.多文档界面(MDI)应用程序.,10,MFC的发展趋势,MFC2.0(VisualC+1.0)菜单元素:File,Open,Save,SaveAs.打印和打印预览.滚动条和分割窗体.工具条和状态条.上下文相关的帮助.对话框.,11,MFC的发展趋势,MFC2.5(VisualC+1.5)ODBCMFC3.0(VisualC+2.0)32bit属性对话框浮动工具条框架窗口,12,MFC的发展趋势,MFC4.0(VisualC+4.0)Windows95兼容的通用控件线程同步互斥类MFC6.0(VisualC+6.0)InternetExplorer通用控件方便管理和动态产生HTML页面MFC8.0(VisualC+.NET2005),13,ApplicationFramework和MFC,ApplicationFramework即应用程序框架:是一组凝聚性极强、组织性极强的类的集合。理念:希望使用者能快速利用既有的资源加以修改和扩充以满足需求。特点:1重复使用的软件构架2开发人员所需做的就是在适当的地方进行修改和补充,完成自己期望的功能。3大大缩短了产品的开发周期,14,ApplicationFramework只是一个概念,真正落实到产品目前市场上比较有影响的有三个:在Microsoft是MFC(MicrosoftFoundationClasses);.NET在Borland是OWL(ObjectWindowLibrary);在IBM是OpenClassLibrary。这三套都是C+ApplicationFramework,其他C+编译器厂商如Watcom,Symantec,Metaware只是提供集成开发环境,其ApplicationFramework都是利用MFC,15,MFC优点:MFC把WindowsAPI函数利用面向对象的原理,逻辑地组织起来,使之具备抽象化、封装化、继承性、多态性的性质。新的趋势:构件作为分布式对象技术的基本思想,与之对应的分布式对象技术也成为人们关注的焦点,陆续出现了比如OMG的CORBAMicrosoft的COM/DCOMJAVA/RMI等主流分布式对象技术,16,.NETFramework,计算机硬件,操作系统(Windows),应用程序接口(Win32/64API),JVM,.NET运行环境(CLR),JFC/EJB,.NET类库,C+类库(MFC/ATL),Java,VisualC#、VisualBasic.NET、VisualJ#、JScript、,VisualC+(MC+或C+),JAVA应用程序,托管应用程序,非托管应用程序,17,18,代码编译,资源编译,Windows头文件,源文件,运行时头文件,MFC头文件,编译器,OBJ文件,Resource.h,资源脚本文件.RC,位图、图标和其它资源,资源编译器,资源文件RES,Windows,运行库和MFC库,链接程序,可执行文件EXE,VC+,Win32程序开发流程,19,20,21,MFCClassHierarchy,CObject,CCmdTargetCGDICFileCDCCMenu,CWinApp,CPenCBrushCFontCbitmap,CWinThreadCDocument,CPointCRectCSizeCTimeCTimeSpanCString,CCommandLineInfoCCreateContextCPrintInfo,struct,CStdioFileCMemFile,CClientDCCPaintDCCWindowDCCPreviewDCCMetaFileDC,22,CCmdTarget,CWinThread,CWinApp,CDocTemplate,CSingleDocTemplateCMultiDocTemplate,CWnd,CButtonCFrameWndCEditCStaticCListBoxCViewCDialog,CDocumentCDocItem,CMDIFrameWndCMDIChildWndCMiniFrameWnd,CCFileDialogCColorDialogCFontDialog,CCtrlViewCScrollView,CEditViewCListViewCRichEditViewCTreeView,CFormView,CDaoRecordViewCRecordView,23,Twenty-twonon-CObject-inheritedclasses:,CArchive,CCmdUI,CCommandLineInfo,CCreateContext,CDaoFieldExchange,CDataExchange,CDBVariant,CDockContext,CDumpContext,CFieldExchange,CFileStatus,CFontHolder,CHandleMap,CHtmlStream,CHttpFilter,CHttpFilterContext,CHttpServer,CHttpServerContext,CMemoryState,CMultiLock,COleCurrency,COleDataObject,COleDateTime,COleDispatchDriver,COleSafeArray,COleVariant,CPictureHolder,CPoint,CPrintInfo,CPropExchange,CRecentFileList,CRect,CRectTracker,CRuntimeClass,CSingleLock,CSize,CString,CTime,CTimeSpan,CTypedPtrArray,CTypedPtrList,CTypedPtrMap,CWaitCursor,24,Windows程序生命周期,程序童年:初始化1用RegisterClass设定窗口属性值,注册窗口类、指定对应窗口函数WndProc2调用CreateWindows送出WM-Create消息产生窗口,消息直接送给WndProc,进行内存配置3调用函数Showwindow显示窗口4调用Updatewindow传送WM-paint消息给窗口,驱动窗口绘图,25,Windows程序生命周期,程序壮年:运行时期5进入消息循环,Getmessage(鼠标、键盘)从系统消息队列和应用程序消息队列抓取消息TranslateMessage转换消息DispatchMessage与WindowsUser模块协作,将消息分派到函数WndProc,26,Windows程序生命周期,程序老年:结束时期6WndPorc处理各种消息7对于消息WM-Close,WndProc将消息交由DefWindowsProc函数处理,后者调用DestroyWindow函数把窗口清除,送出WM-Destroy消息8WndProc用函数PostQuitMessage响应消息,后者产生WM-Quit消息9消息循环中,用Getmessage返回0结束消息循环,27,在实际Windows程序中1Registerclass由InitApplication调用2-4由InitInstance调用Dos:采用顺序过程的程序设计方法:按照预先设定操作组合,直接控制事件过程顺序Windows:消息或事件驱动,改善用户界面,Windows程序生命周期,28,Windows支持两种类型的应用程序:1一种是基于图形用户界面(GraphicalUserInterface,称GUI)的窗口应用程序;2另一种是基于控制台用户(ConsoleUserinterface,简称CUl)的应用程序,即“MS-DOS界面的应用程序。不要以为使用控制台环境的程序就不是Windows程序,它可以使用所有的Win32API,甚至可以创建窗口进行绘图。,29,匈牙利标记法和Windows数据类型,1变量名前用一个或多个小写字符来标识变量的类型:h代表句柄,n代表整数,p代表指针等等2前缀组合在一起形成新的前缀,如p代表指针,sz代表以零结尾的字符串,psz代表指向以零结尾的字符串3前缀代表MFC自己的数据类型:WM代表WindowMessage(窗口消息),30,PrefixDataTypebBOOLcorchcharclrCOLORREFcx,cyHorizontalorverticaldistancedwDWORDhHandlelLONGnintpPointerszZero-terminatedstringwWORDwndCWndstrCStringm_classmembervariable,31,Windows数据类型,类型含义BOOLBoolean值(TRUE或FALSE)BSTR32位字符指针BYTE8位整数,无符号COLORREF32位数值,代表颜色值DWORD32位整数,无符号LONG32位整数,有符号LPARAM32位数值作为窗口函数参数LPCSTR32位指针,指向常数字符串,32,LPSTR32位指针,指向一个字符串LPCTSTR32位指针,指向常数字符串,此串可移植到Unicode和DBCS(双字节)LPTSTR32位指针,指向字符串,此串可移植到Unicode和DBCSLPVOID32位指针,指向未指定类型的数据LPRESULT32位数值,作为窗口函数返回值UINT在Win16中为16位无符号整数在Win32中为32位无符号整数WORD16位整数,无符号WPARAM窗口函数的参数。Win16中为16位Win32中为32位,33,句柄,HACCEL加速键表句柄HANDLE对象句柄HBITMAP位图句柄HCURSOR光标句柄HDC设备描述表句柄HFILE文件句柄HFONT字体句柄HGDIOBJGDI对象句柄HICON图标据柄HINSTANCE实例句柄HMENU菜单句柄HPALATTE调色板句柄HPEN画笔句柄HWND窗口句柄句柄并非对象的地址,而是作索引值来使用。,34,MFC中还有许多宏,常见的有:,宏名称功能DECLARE_DYNAMIC运行时类信息IMPLENMENT_DYNAMIC运行时类信息DECLARE_DYNCREATE动态创建IMPLENMENT_DYNCREATE动态创建DECLARE_SERIAL对象内容的文件读写IMPLENMENT_SERIAL对象内容的文件读写,35,以消息为基础用事件驱动,消息(键盘和鼠标)是由操作系统捕捉到之后,以消息形式(一种数据结构)进入程序中(操作系统靠USER模块实现捕捉,36,消息,MessageSentWhenWM_CHARAcharacterisinputfromthekeyboard.WM_COMMANDTheuserselectsanitemfromamenu,oracontrolsendsanotificationtoitsparent.WM_CREATEAwindowiscreated.WM_DESTROYAwindowisdestroyed.WM_LBUTTONDOWNTheleftmousebuttonispressed.WM_LBUTTONUPTheleftmousebuttonisreleased.WM_MOUSEMOVEThemousepointerismoved.WM_PAINTAwindowneedsrepainting.WM_QUITTheapplicationisabouttoterminate.WM_SIZEAwindowisresized.,37,消息,就是MSG结构,实际上是Windows内设的一种数据结构:typedefstructtagMSGHWNDhwnd;/窗口句柄惟一标识窗口UINTmessage;/消息值,如WM_XXX.WPARAMwParam;/消息的附加信息LPARAMlParam;/消息的附加信息.MSG;wParamandlParam,依赖消息成员的值.如WM_LBUTTONDOWN是CtrlorShift键的状态,和鼠标的坐标.,38,MSGmsg;while(GetMessage(,39,应用程序类层次,框架CframeWnd主程序CwinApp文档类Cdocument视图类Cview消息传递:CframeWnd-Cwnd-CWinApp-CWinThread-CCmdtarget-Cobject或CView-CWnd-CWinApp-CWinThread-CCmdTarget-Cobject,40,#include,WINDEF.HBasictypedefinitions.WINNT.HTypedefinitionsforUnicodesupport.WINBASE.HKernelfunctions.WINUSER.HUserinterfacefunctions.WINGDI.HGraphicsdeviceinterfacefunctions.,41,42,/*-HELLOWIN.C-DisplaysHello,Windows98!inclientarea(c)CharlesPetzold,1998-*/#includeLRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论