《MFC编程基础》PPT课件.ppt

上传人:za****8 文档编号:12668937 上传时间:2020-05-13 格式:PPT 页数:68 大小:793.51KB
返回 下载 相关 举报
《MFC编程基础》PPT课件.ppt_第1页
第1页 / 共68页
《MFC编程基础》PPT课件.ppt_第2页
第2页 / 共68页
《MFC编程基础》PPT课件.ppt_第3页
第3页 / 共68页
点击查看更多>>
资源描述
1,第四章Windows编程基础,河北经贸大学信息技术学院,VC+语言程序设计,2,本章导读,Windows操作系统是一个多任务、面向对象的图形操作系统。在Windows操作环境中,Windows应用程序采用“基于消息的事件驱动”运行机制,这是它与过去的面向过程的应用程序机制的不同之处。,面向过程的编程方式:程序执行的流程遵从程序员预先规定的路径.面向对象的Windows程序执行顺序取决于事件和消息发生的顺序。Windows应用程序设计的重点是编写事件和消息的处理程序。,3,本章主要内容,Windows编程的概念Windows应用程序的基本结构利用WindowsAPI函数编写Windows应用程序,4,编写Windows应用程序必须首先了解以下内容:(1)窗口的概念(2)事件驱动的概念(3)消息(4)句柄,编写Windows程序相当一部分工作是在创建对象和为对象属性赋值,对象特征:具有规范形态和操作模式,4.1Windows编程的概念,一个应用程序的窗口一般包含下列组成部分:,1.窗口P123,6,窗口是由应用程序创建的一个用于接收用户输入和显示输出的矩形区域。是系统管理应用程序的基本单位。窗口由“非客户区”和“客户区”组成。非客户区由系统绘制,包括菜单、工具栏、最大化按钮等。客户区由应用程序绘制,用于输出数据和接受用户的输入。编写一个Windows应用程序首先应创建一个或多个窗口,随后应用程序的运行过程即是窗口内部、窗口与窗口之间、窗口与系统之间进行数据处理与数据交换的过程。,1.窗口,7,Windows程序设计是针对事件或消息的处理进行。,消息是描述事件发生的信息如按下鼠标或键盘,Windows对消息有一套严格的定义,并在其产生时将其发送给所有相关的应用程序,这些消息用于驱动应用程序运行以实现一定的功能。,Windows程序的执行顺序取决于事件发生的顺序,程序的执行顺序是由顺序产生的消息驱动的,但是消息的产生往往并不要求有次序之分。,2.事件驱动P119-123,8,消息驱动机制P119,派送消息,消息源1,消息源2,消息源n,否,捕获消息,是否退出消息,是,处理消息,9,3消息,消息的含义消息来源消息队列消息的结构,消息是关于所发生的事件的通知.事件是一个动作,如按下鼠标、选择菜单,输入消息、控制消息、系统消息、用户消息,USER用户交互内核来管理,10,Windows应用程序的结构是基于消息驱动模型,程序的任何一个动作都是在接收到一条消息后发生的,如:WM_KEYDOWNWM_KEYUPWM_CHARWM_LBUTTONDOWNWM_LBUTTONUPWM_PAINTWM_COMMAND等,每条消息都可以带有参数(wParam,lParam)。大部分的消息都关联到某个窗口,每个窗口都有一个消息处理过程(函数),属于某个窗口的消息都将由相应的消息处理过程来进行处理。每个Windows应用程序都有一个消息队列,Windows系统会把属于各个应用程序的消息放入各自的消息队列,应用程序不断地从自己的消息队列中获取消息并把它们发送到相应的窗口处理过程。这个循环(取消息-处理消息)一直到用户以某种方式(如:关闭应用程序的主窗口)结束程序而终止。下面给出了Windows应用程序的一个框架:,消息的含义,消息队列,USER用户交互内核,12,消息的结构定义:typedefstructtagMSGHWNDhwnd;接收消息的窗口句柄,为null,则可检索所有驻留在消息队列中的消息UINTmessage;消息值,由Windows.h头文件中的宏定义来标识WPARAMwParam;32位消息的附加信息wParam和lParam,不同消息其值有所不同LPARAMlParam;DWORDtime;指定消息送至队列的时间POINTpt;指定消息发送时屏幕光标的位置,其数据类型POINT是一个结构体MSG;,附加信息与具体消息号的值有关,对于控件,含义见P167,typedefstructtagPOINTLONGx;LONGy;POINT;,消息的结构,13,常用句柄类型及其说明,应用程序通过句柄访问相应的对象信息,HWND窗口句柄HDC设备环境句柄HBITMAP位图句柄HCURSOR光标句柄HICON图标句柄HFONT字体句柄HMENU菜单句柄HPEN画笔句柄HFILE文件句柄HBRUSH画刷句柄HINSTANCE当前实例句柄,4.句柄P121,要理解句柄,应注意几点:P121,14,一个完整的Windows应用程序通常由五种类型的文件组成。,1.C语言源程序文件2.头文件3.模块定义文件4.资源描述文件5.项目文件,1.应用程序的组成,4.2Windows应用程序的基本结构,一个windows应用程序常具有以下特性:(1)消息驱动机制(2)图形设备界面(GDI)(3)基于资源的程序设计(4)动态链接库,15,1.所有应用程序的入口,类似Main函数,2.完成一系列的定义和初始化,并产生消息循环,2.源程序组成结构(APIP127),16,(1)WinMain函数P127,三个基本的组成部分:函数说明、初始化和消息循环详见P127129,WinMain()函数,相当于main(),17,WndProc函数由一个或多个switch语句组成。每一条case语句对应一种消息,当应用程序接收到一个消息时,相应的case语句被激活并执行相应的响应程序模块。例见P129代码,(2)窗口函数WndProc和消息处理P129,18,N,N,Y,Y,3.Windows应用程序的执行过程,19,在Windows.h中定义了Windows应用程序中包含种类繁多的数据类型,4数据类型,20,MSG:包含一个消息的全部信息,是消息发送的格式,WNDCLASS:包含一个窗口类的全部信息及属性,POINT:定义了屏幕上或窗口中的一个点的X和Y坐标,RECT:定义了一个矩形区域及其左上角和右下角的坐标,几种重要的结构,5.一些重要的数据结构,21,API,API函数的功能,附:API函数概念(补充),作业P1314-1、4-2、4-3,22,第五章MFC编程基础,河北经贸大学信息技术学院,VC+语言程序设计,23,本章主要内容,MFC类库简介MFC中类的层次结构MFC应用程序框架利用AppWizard生成MFC应用程序MFC的消息处理,24,本章导读,MFC类基础。利用向导建立一个MFC应用程序框架。,MFC消息处理机制键盘、鼠标和自定义消息的处理。,25,5.1MFC简介P132,类库是一个可以在应用程序中使用的相互关联的类的集合。MFC库Microsoft基本类库是一个Windows应用程序框架,它把传统的Windows编程规范中的大多数内容封装成为各种类,它定义了应用程序的结构,并实现了标准的用户接口,提高了编程效率可以管理窗口、菜单、对话框,实现基本的输入/输出和数据存储。,MFC库简介,26,5.2MFC类的层次结构和常用类详见P133-138,MFC分类CObject_derived类Non_CObject_derived类,根类,命令相关类,应用程序类,窗口类,文档类,视图类,框架窗口类,线程基类,27,非CObject派生类,通用工具类CStringCTimeCRectCpointCSize,MFC支持类CArchiveCDumpContextCRuntimeClassCFileStatusCMemoryStateCTypePointerArray,其他详见P134138,28,5.3MFC应用程序框架结构,MFC库简介,MFC的应用程序框架优点:MFC按照C+类的层次形式组织在一起,类封装了WindowsAPI函数并提供Windows应用程序常见任务的缺省处理代码。几个基类提供一般功能,由基类派生的类实现更具体的行为。MFC提供了文档和视图模型以实现数据和显示的分离。文档类(Document)用来维护、管理数据,包括数据的读取、存储与修改;视图类(View)用来接收并显示数据,将这些数据交给文档类来处理。MFC库提供了自动消息处理功能。MFC的框架结构通过消息映射机制,将Windows消息直接映射到个成员函数进行处理,简化了消息的处理方式。,29,应用程序框架包含用于生成应用程序所必需的各种面向对象的组件的集合.VC+6.0中,MFCAPPWizard能方便地生成应用程序框架,然后在此基础上进行进一步的编辑工作.MFC生成的应用程序包括如下一些要素:,30,WinMain()函数,隐藏在应用程序框架中;应用程序类(如CMyHelloApp),该类的每个对象代表一个应用程序,程序中默认定义一个全局CMyHelloApp对象即theApp;应用程序启动WinMain()寻找由CWinApp派生出的全局构造的应用程序对象;成员函数:CMyHelloApp:InitInstance(),调用所需的构造并显示应用程序的主框架窗口;成员函数:CWinApp:Run(),隐藏在基类中,发送应用程序的消息到窗口,保持应用程序的正常运行;,MFC库简介,31,CMainFrame类,其对象代表应用程序的主框架窗口;CDocument/CView类,应用程序框架的核心。MFC通过文档一视图结构为应用程序提供一种将数据与视图相分离的存储方式。文档类的作用是将应程序的数据保存在文档类对象中,以及从磁盘文件中读或向磁盘文件中写数据。视图类的作用是显示数据和编辑数据。关闭应用程序,MFC库简介,32,应用程序的运行机制P144,MFC应用程序有自己特殊的运行机制,下面以WinHello程序为例,列出应用程序的执行过程。,程序开始,初始化全局对象theApp,CWinApp类构造函数,CHelloApp类构造函数,AfxWinMain函数,pApp-InitInstance(),调用ProcessShellCommand()创建主框架窗口对象、视图对象、文档对象,创建主框架窗口和视图窗口并显示,CWinThread:Run()WM_QUIT,消息循环,结束,pApp-Run(),CHelloApptheApp,CWinApp*pApp=AfxGetApp();,WinMain,pApp-InitApplication();,33,5.3利用AppWizard生成MFC应用程序,创建工程:用VisualC+的MFCAppWIzard创建应用程序的基本框架可视化设计:用VC+自带的工具软件Wizards,制作Windows风格的图形用户界面和各种控件。编写程序代码:用MFCClassWizard添加消息相应函数,然后编写函数代码。,34,MyHello应用程序P138-142,创建工程“File/New/Project/MFCAppWizard(exe)”Projectname:”MyHello”;Location:”d:MyVC”根据向导选择:Singledocument中文中国None其它接受默认设置,最后单击“Finish”,显示“NewProjectInformation”窗口。,35,MyHello应用程序,编写程序代码“Workspace/FileView/MyHelloView.cpp”找到函数OnDraw(CDC*pDC),在其中添加显示字符串:pDC-TextOut(100,80,”Hello,我们开始VC+编程了!”);,36,MyHello应用程序,编译运行编译:“Build/BuildMyHello.exe”运行:“Build/ExecuteMyHello.exe”关闭:关闭运行窗口,37,MyHello应用程序分析,打开“Workspace”窗口中的”ClassView(类视图),MFC生成5个类CAboutDlgCMainFrameCMyHelloAppCMyHelloDocCMyHelloView对于每个类MFC生成两个文件:.h:定义了类和它的各种变量、函数原形;.cpp:生成类对象、实现这个类的函数体。,38,MyHello应用程序分析,CMyHelloApp类:派生于MFC的CWinApp类,作用是初始化应用程序及运行该程序的所需的成员函数。MyHello.h:声明了CMyHelloApp类,虚函数InitInstance()的作用:设置注册数据库,载入标准设置(最近打开的文件列表等)、注册文档模板,其中在注册文档模板时隐含创建了主窗口接下来处理命令行参数,显示窗口,然后返回、进入消息循环。,39,MyHello应用程序分析,CMainFrame类:派生于MFC的CFrameWnd类,作用是管理应用程序的窗口,显示标题栏、状态栏、工具栏等,同时处理针对窗口操作的信息。MainFrm.h:声明了两个主要函数PreCreateWindow()和OnCreate()及两个对象m_wndStatusBar(管理状态栏)和m_wndToolBar(管理工具栏),40,MyHello应用程序分析,CMyHelloDoc类:派生于MFC的CDocument类,作用是存放应用程序的数据以及文件的保存加载功能。文档类要通过视图类来实现与用户的交互。CMyHelloDoc.h:声明了三个主要函数OnNewDocument()用于初始化文档Serialize()串行化(保存和装入)文档Dump()用于调试诊断。,41,MyHello应用程序分析,CMyHelloView类:派生于MFC的CView类,作用是管理视图窗口,它对应的对象在框架窗口中实现用户数据的显示和打印。MyHelloView.h:声明了三个函数用于实现数据打印OnPreparePrinting()/OnBeginPrinting()/OnEndPrinting()。GetDocument():返回CMyHelloDoc指针,获取文档指针OnDraw():实现视图数据的显示和刷新。,42,MyHello应用程序分析,预编译头文件stdafx.h:用于建立一个预编译的头文件MyHello.pch和一个预定义的类型文件stdafx.obj,加速编译过程。资源文件:Resource.hMyHello.ioc:应用程序的图标MyHello.rc2:不可直接编辑的资源Toolbar.bmp:工具栏用到的位图资源MyHelloDov.ico:生成文档的图标ReadMe.txt,43,5.4MFC消息处理详见P148-151,MFC应用程序与其他任何Windows程序一样,也使用消息驱动机制,但MFC提供的消息处理机制使得消息的处理更加容易。MFC中消息可以分为三类:Windows消息(窗口消息):包括以WM_开头的消息,但WM_COMMAND除外。Windows消息由窗口和视图处理。这种消息通常附带一些参数传递给处理函数,这些参数为处理函数正确地处理消息提供了必要的信息。控件通知消息:当控件的状态发生改变(例如用户利用控件进行输入)时,控件就会向其父窗口发送控件通知消息。MFC对控件通知消息的传递方式与其他以WM_开头的Windows消息一样,但BN_CLICKED是个例外,该消息的传递方式与命令消息的传递机制一样。命令消息:包括来自于菜单、工具栏中的按钮和加速键等用户界面对象的WM_COMMAND通知消息。,44,消息映射,声明宏p148-149DECLEAR_MESSAGE_MAP()(.h文件)BEGIN_MESSAGE_MAP()/实现(.cpp).ON_Message(ID,ClassMethod)END_MESSAGE_MAP()消息映射项ON_Message(ID,ClassMethod)窗口消息、命令消息、控件通知消息的消息映射项不同,详见P149-150消息处理方法afx_msgvoidClassMethod();发送消息SendMessage()直接调用窗口函数P151寄送消息PostMessage()到队列,45,VC中存在几种系统定义的消息分类,不同的前缀符号经常用于消息宏识别消息附属的分类,系统定义的消息宏前缀如下:,BN按钮控制消息CBN组合框控制消息DN默认下压式按钮控制消息EN编辑控制消息LBN列表框控制消息SBN滚动条控制消息WM窗口消息,窗口管理消息初始化消息输入消息系统消息剪贴板消息控制处理消息控制通知消息滚动条通知消息非用户区消息MDI消息DDE消息应用程序自定义的消息,Windows编程常用消息,46,鼠标作为定位输入设备,通过鼠标单击、双击和拖动功能,用户可以很容易地操作基于Windows图形界面的应用程序。,常用鼠标消息:,鼠标消息处理,47,相当于窗口的左上角为原点的坐标值,48,对于鼠标消息的处理,不监测Shift和Ctrl键,caseWM_LBUTTONDOWN:/按下鼠标左键break;caseWM_LBUTTONUP:/释放鼠标左键break;,49,鼠标应用程序实例,鼠标消息处理程序当用户对鼠标进行操作时,会产生响应的消息,系统将把此消息发送到对应的窗口改造例5-1,MyHello程序,添加相应鼠标输入功能,50,鼠标应用程序实例,声明视图类的数据成员CStringm_MousePoint;/存储鼠标的方式和位置方法:在MyHelloView.h中protected:处CStringm_MousePoint;或右击CMyHelloView类,”AddMemberVariable”在视图类的构造函数中初始化m_MousePoint=“;(在MyHelloView.cpp中)修改屏幕重画函数OnDraw()pDC-Textout(100.100,m_MousePoint);(在MyHelloView.cpp中或双击OnDraw(),51,鼠标应用程序实例,添加鼠标消息WM_LBUTTONDOWN响应函数类向导菜单ViewClassWizardMessageMapsClassName:CmyHelloView(选择);ObjectIDs:CMyHelloView(选择);Messages:WM_LBUTTONDOWN(选择);单击“AddFunction”同样方法,在CMyHelloView类中,添加鼠标消息WM_LBUTTONUP和WM_MOUSEMOVE的响应函数ClassWizard自动为应用程序作了三件事:,52,鼠标应用程序实例,(1)在CMyHelloView类中添加了三个成员方法,即在MyHelloView.h中添加了三个响应函数的原型说明afx_msgvoidOnLButtonDown(UNITnFlags,Cpointpoint);afx_msgvoidOnLButtonUp(UNITnFlags,Cpointpoint);afx_msgvoidOnMouseMove(UNITnFlags,Cpointpoint);(2)在MyHelloView.cpp中添加了个消息映射ON_WM_LBUTTONDOWN()ON_WM_LBUTTONUP()ON_WM_MOUSEMOVE()(3)在MyHelloView.cpp中添加了个响应函数的空函数体voidCMyHelloView:OnLButtonDown(UNITnFlags,Cpointpoint)voidCMyHelloView:OnLButtonUp(UNITnFlags,Cpointpoint)voidCMyHelloView:OnMouseMove(UNITnFlags,Cpointpoint),53,鼠标应用程序实例,编写消息响应函数代码voidCMyHelloView:OnLButtonDown(UNITnFlags,Cpointpoint)m_MousePoint.Format(“鼠标左键在点(%d,%d)按下”,point.x,point.y);Invalidate();/使系统让用户区无效,从而调用重画函数OnDraw()voidCMyHelloView:OnLButtonUp(UNITnFlags,Cpointpoint)m_MousePoint=“鼠标左键被释放”;Invalidate();voidCMyHelloView:OnMouseMove(UNITnFlags,Cpointpoint)m_MousePoint.Format(“鼠标位于点(%d,%d)按下”,point.x,point.y);Invalidate();,54,鼠标应用程序实例,查看结果(演示),55,键盘消息处理实例,键盘消息处理程序当用户对键盘进行操作时,会产生响应的消息,系统将把此消息发送到对应的窗口改造MyHello程序,添加相应键盘的字符输入声明视图类的数据成员intm_nLine;/存储回车次数CStringm_strDisplay;/存储当前行输入的字符在视图类的构造函数中初始化m_nLine=0;添加键盘消息WM_CHAR响应函数“View/ClassWizard/MessageMaps(消息映射)”ClassName:CmyHelloView;ObjectIDs:CMyHelloView;Messages:WM_CHAR;单击“AddFunction”,在CMyHelloView类中,添加键盘消息WM_CHAR的响应函数,56,(1)在CMyHelloView类中添加了一个成员方法,即在MyHelloView.h中添加了一个响应函数的原型说明afx_msgvoidOnChar(UNITnChar,UINTnReCnt,UnitnFlags);(2)在MyHelloView.cpp中添加了一个消息映射ON_WM_CHAR()(3)MyHelloView.cpp中添加了一个响应函数的空函数体voidCMyHelloView:OnChar(UNITnChar,UINTnReCnt,UnitnFlags),键盘消息处理实例,ClassWizard自动为应用程序作了三件事,57,编写消息响应函数代码voidCMyHelloView:OnChar(UNITnChar,UINTnReCnt,UnitnFlags)if(nChar=VK_RETURN)/如按回车键m_strDisplay.Empty();/清空变量m_nLine+;/行数加一elsem_strDisplay+=nChar;/将输入的字符添加到变量m_strDisplay的尾端CClientDCdc(this);/获取客户区设备环境dc.TextOut(0,m_nLine*20,m_strDisplay);Cview:OnChar(nChar,nRepCnt,nFlags);,按键的字符代码值,重复击键的次数,扫描码和键转换后的状态,键盘消息处理实例,58,查看结果(演示),键盘消息处理实例,59,技术要点,常用虚拟键盘码,nFlag功能描述表,键盘消息处理实例,60,技术要点1、定义用户消息的IDconstWM_USERMSG=WM_USER+n;2、消息处理函数(声明与定义)3、消息映射4、用户消息的发送-在某函数中发送自定义消息BOOLPostMessage(HWNDhWnd,UNITMsg,WPARAMwParam,LPARAMlParam)调用:PostMessage(hWnd,WM_USERMSG,0,0);,自定义消息处理实例,最好从100开始,61,自定义消息处理,例如在MyHello.exe程序中添加如下功能当用户单击光标上移键时,程序发出用户自定义消息,在对应的消息响应函数中,弹出消息对话框。(演示)改造MyHello程序,添加相应键盘的字符输入定义用户消息和消息响应函数(1)在MyHelloView.h中类的声明上面加入如下声明constWM_USEMSG=WM_USER+100;/定义用户消息的ID(标识符)(2)在MyHelloView.h中的公有段添加voidOnMyFunction();/声明用户消息响应函数在MyHelloView.cpp中编写OnMyFunction()代码voidCMyHelloView:OnMyFunction()MessageBox(“恭喜你,消息发送成功!”);,62,自定义消息处理实例,(3)添加消息映射在CMyHelloView.cpp的类的消息映射中加入有关语句ON_MESSAGE(WM_USERMSG,OnMyFunction)(4)用户消息的发送当用户按下光标上移键时,程序发出用户自定义消息,在对应的消息响应函数中,弹出消息对话框。添加WM_KEYDOWN消息响应函数“View/ClassWizard/MessageMaps(消息映射)”ClassName:CmyHelloView;ObjectIDs:CMyHelloView;Messages:WM_KEYDOWN;单击“AddFunction”编写发送自定义消息代码voidCMyHelloView:OnKeyDown(UNITnChar,UINTnReCnt,UnitnFlags)HWNDhWnd=GetSafeHwnd();if(nChar=VK_UP):PostMessage(hWnd,WM_USERMSG,0,0);return;,63,自定义消息处理实例,查看结果(演示),64,MFC类基础。利用向导建立一个MFC应用程序框架。,MFC消息处理机制键盘、鼠标和自定义消息的处理。,小结,思考题:4-2,4-3,5-1,5-2,5-3,5-4作业题:写出常用的键盘、鼠标消息。课外上机,练习MFC应用程序框架,及键盘鼠标消息的处理。,作业,65,PostMessage(),ThePostMessagefunctionplaces(posts)amessageinthemessagequeueassociatedwiththethreadthatcreatedthespecifiedwindowandthenreturnswithoutwaitingforthethreadtoprocessthemessage.MessagesinamessagequeueareretrievedbycallstotheGetMessageorPeekMessagefunction.BOOLPostMessage(HWNDhWnd,/handleofdestinationwindowUINTMsg,/messagetopostWPARAMwParam,/firstmessageparameterLPARAMlParam/secondmessageparameter);其中hWndHandletothewindowwhosewindowprocedureistoreceivethemessage.Twovalueshavespecialmeanings:ValueMeaningHWND_BROADCASTThemessageispostedtoalltop-levelwindowsinthesystem,includingdisabledorinvisibleunownedwindows,overlappedwindows,andpop-upwindows.Themessageisnotpostedtochildwindows.NULLThefunctionbehaveslikeacalltoPostThreadMessagewiththedwThreadIdparametersettotheidentifierofthecurrentthread.MsgSpecifiesthemessagetobeposted.wParamSpecifiesadditionalmessage-specificinformation.lParamSpecifiesadditionalmessage-specificinformation.ReturnValuesIfthefunctionsucceeds,thereturnvalueisnonzero.Ifthefunctionfails,thereturnvalueiszero.Togetextendederrorinformation,callGetLastError.,66,CWnd:PostMessage,BOOLPostMessage(UINTmessage,WPARAMwParam=0,LPARAMlParam=0);ReturnValueNonzeroifthemessageisposted;otherwise0.ParametersmessageSpecifiesthemessagetobeposted.wParamSpecifiesadditionalmessageinformation.Thecontentofthisparameterdependsonthemessagebeingposted.lParamSpecifiesadditionalmessageinformation.Thecontentofthisparameterdependsonthemessagebeingposted.,67,CWindow:SendMessage,LRESULTSendMessage(UINTmessage,WPARAMwParam=0,LPARAMlParam=0);staticLRESULTSendMessage(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)说明Sendsthespecifiedmessagetothiswindow.TheSendMessagememberfunctioncallsthewindowproceduredirectlyanddoesnotreturnuntilthatwindowprocedurehasprocessedthemessage.ThisisincontrasttothePostMessagememberfunction,whichplacesthemessageintothewindowsmessagequeueandreturnsimmediately.,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!