第10章:用户交互对象-菜单、工具栏和状态栏_第1页
第10章:用户交互对象-菜单、工具栏和状态栏_第2页
第10章:用户交互对象-菜单、工具栏和状态栏_第3页
第10章:用户交互对象-菜单、工具栏和状态栏_第4页
第10章:用户交互对象-菜单、工具栏和状态栏_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

第10章用户交互对象——

菜单、工具栏和状态栏

教学要点

本章内容主要包括菜单资源和工具栏资源的建立,菜单和工具栏按钮对象对WM_COMMAND,UPDATE_COMMAND_UI消息的响应,状态栏牵涉的字符串资源的编辑和对UPDATE_COMMAND_UI消息的响应,在框架类中如何管理工具栏和状态栏。1本章内容 10.1菜单 10.2工具栏 10.3状态栏

习题

210.1 菜单

本节内容

10.1.1一个菜单的综合实例10.1.2菜单的组成与分类10.1.3创建菜单资源10.1.4菜单消息10.1.5菜单消息的响应*10.1.6为菜单增加快捷键和加速键310.1.1 一个菜单的综合实例

【例10-1】利用应用程序向导MFCAppWizard(exe)创建一个单文档的应用程序,实现菜单资源的建立与消息的响应。1.生成步骤:

(1)启动VC6.0,选择“File”菜单的“New”命令,在弹出的“New”对话框中选择“Project”选项卡。在“Project”选项卡的列表中选择“MFCAppWizard(exe)”项,在“ProjectName”编辑框中输入要创建的工程名称MenuExam,在“Location”编辑框中设置工程的存放位置,单击“OK”按钮。(2)在弹出的“MFCAppWizard-Step1”对话框中选择“singledocument”,即应用程序的类型为单文档模式,然后单击“Finish”按钮。(3)在弹出的“NewProjectinformation”对话框中单击“OK”按钮,完成应用程序框架的创建。4

2.程序功能

该程序为一个单文档的应用程序,程序启动后,单击“图形”菜单中的“饼图”,则在当前的客户区中显示一个饼图;单击“图形”菜单中的“弦图”,则在当前的客户区中显示一个弦图。图10.1所显示的就是使用中的MenuExam程序。3.程序牵涉到的知识

掌握这几种类型菜单的资源设计与消息的响应。510.1.2 菜单的组成与分类

1.菜单的组成菜单是一种资源,它在资源脚本中经常被存作一个模板,用户通常从菜单栏中选择命令来操作应用程序。菜单主要由下列部分组成:(1)菜单栏(2)菜单(3)菜单项(4)子菜单(5)分隔条(separator)2.菜单的分类Windows系统支持三种类型的菜单,它们分别是菜单栏(主菜单)、弹出式子菜单和上下文菜单。610.1.3 创建菜单资源

VC应用程序的资源是由应用程序使用,但却是在程序之外定义的只读数据。菜单是一种资源,可以利用文本编辑器来创建和修改资源,它操作麻烦,不具有可视化的效果。现在的VC程序中的资源编辑都是通过可视化的资源编辑器来进行的。 对于SDI的应用程序,应用程序向导生成一个菜单资源IDR_MAINFRAM,对于一般的程序,我们就直接在上面添加自己所需要的菜单资源,方法为:1.打开缺省菜单资源

在Workspace窗口中选择ResourceView选项卡,打开MenuExam工程的资源列表,选中“Menu”资源项目下的“IDR_MAINFRAME”,可以看到应用程序缺省定义的菜单资源形式,它包含如图10.2所示的菜单中的“文件”、“编辑”、“查看”、“帮助”四个菜单项。7

2.增加一个主菜单项“图形”

选择“帮助”菜单,然后按“Insert”键将会在“查看”与“帮助”菜单项之间加入一个空菜单项。双击该菜单项,弹出图10.3所示的主菜单属性对话框,并在其中的“Caption”编辑框中输入主菜单的标题为“图形”。这样在应用程序的主框架中就增加了一个主菜单项“图形”。

3、增加主菜单“图形”的子菜单项

用鼠标双击“图形”菜单下的空白菜单项,弹出图10.4所示的子菜单属性设置对话框,在ID组合框中输入菜单的资源ID为ID_GRAPH_PIE,在“Caption”编辑框中输入“饼图”,在“Prompt”编辑框中输入菜单项提示信息为“在客户区画一个饼图\n画饼图”。用同样的方法再添加一个菜单项,其中菜单资源ID为ID_GRAPH_CHORD,“Caption”的内容为“弦图”,“Prompt”中的内容为“在客户区画一个弦图\n画弦图”。8图10.2单文档程序的缺省菜单

9图10.3主菜单属性对话框

图10.4子菜单的属性对话框10

4.增加上下文菜单上下文菜单必须要有自己的资源ID,在Workspace窗口中选择ResourceView选项卡,打开MenuExam工程的资源列表,鼠标右键单击“Menu”项,在弹出菜单中选择“InsertMenu”,完后将该菜单资源的ID修改为IDR_POPUP_MENU。用同步骤3的方法在IDR_POPUP_MENU资源中添加主菜单“上下文菜单”。11

10.1.4 菜单消息

菜单被选中时发送消息给Windows,再由Windows传送给应用程序的消息映射。在MFC消息映映射中,有三个菜单消息:WM_COMMAND、ON_UPDATE_COMMAND_UI和WM_CONTEXTMENU。1.WM_COMMAND消息

当用户选中了菜单项,激活了相关键加速器或者是选中了与此菜单项相对应的工具栏按钮,Windows发送WM_COMMAND消息,该消息又叫命令消息。命令消息的消息映射采用以下形式:

ON_COMMAND(MenuId,ClassMethod)2.UPDATE_COMMAND_UI消息

UPDATE_COMMAND_UI是MFC所特有的,如果你想根据应用程序的当前状态激活或者使菜单项无效,或者在程序运行的某一时刻反映菜单项的可用性,该条消息就要处理。消息映射采用以下形式:

ON_UPDATE_COMMAND_UI(MenuID,ClassMethod)

123.上下文菜单消息WM_CONTEXTMENU在Windows系统下,随处可见上下文菜单,只要你是在不同程序的不同操作区域内,按下鼠标右键,都会出来一个与当前操作上下文有关的菜单,它就是上下文菜单。当用户按下鼠标右键时,就会发出上下文菜单消息WM_CONTEXTMENU。该消息的消息映射宏为:

ON_WM_CONTEXTMENU()13

10.1.5菜单消息的响应

Windows是通过消息传递机制运行的。菜单项对命令的激发、调用是通过发送WM_COMMAND消息来实现的。在单文档和多文档的应用程序中,要考虑消息的路由问题。

命令消息WM_COMMAND可以映射到不同的类中,可以根据菜单的不同作用进行不同的映射。对于通用的菜单,则在框架中映射。About对话框的显示菜单最好在应用程序类中映射。在使用类向导为菜单的命令消息进行映射后,ClassWizard自动向程序中插入菜单命令消息映射入口、消息处理函数的原型说明和空的消息映射函数体。

141.添加WM_COMMAND菜单命令消息响应函数(1)打开前面创建的MenuExam工程,选择View|ClassWizard命令打开类向导对话框。(2)在图10.5所示的对话中,单击“ClassName”列表框中的下拉按钮,在其中选择“CMenuExamView”项,在“ObjectIDs”列表框中选择“ID_GRAPH_PIE”,在“Message”列表中选择“Command”项,然后单击“AddFucntion”按钮弹出“AddMemberFunction”对话框,采用默认的函数名,单击“OK”按钮。(3)用同样的方法为视图类CmenuExamView中添加了“弦图”菜单项的命令消息函数OnGraphChord()。(4)消息映射函数的实现点击代码152.添加UPDATE_COMMAND_UI更新菜单命令用户接口的消息响应函数

(1)打开MenuExam工程,选择View|ClassWizard命令打开类向导对话框,单击“ClassName”列表框中的下拉按钮,在其中选择“CMenuExamView”项,在“ObjectIDs”列表框中选择“ID_GRAPH_PIE”,在“Message”列表中选择“UPDATE_COMMAND_UI”项,然后单击“AddFucntion”按钮弹出“AddMemberFunction”对话框,采用默认的函数名OnUpdateGraphPie,单击“OK”按钮。(2)用同样的方法,在视图类CmenuExamView中添加了“弦图”菜单项的更新命令用户接口的消息函数OnUpdateGraphChord()。(3)消息映射函数的实现

①“饼图”菜单项的更新命令用户接口消息函数OnUpdateGraphPie的代码16

voidCMenuExamView::OnUpdateGraphPie(CCmdUI*pCmdUI){

pCmdUI->Enable(!m_IsPie);}②“弦图”菜单项的更新命令用户接口消息函数OnUpdateGraphChord的代码voidCMenuExamView::OnUpdateGraphChord(CCmdUI*pCmdUI){pCmdUI->Enable(m_IsPie);}3.添加WM_CONTEXTMENU上下文菜单消息响应函数

(1)打开MenuExam工程,选择View|ClassWizard命令打开类向导对话框,单击“ClassName”列表框中的下拉按钮,在其中选择“CMenuExamView”项,在“ObjectIDs”列表框中选择“CMenuExamView”,在“Message”列表中选择“WM_CONTEXTMENU”项,然后单击“AddFucntion”按钮弹出“AddMemberFunction”对话框,采用默认函数名OnContextMenu,单击“OK”按钮。17(2)鼠标右键单击响应函数OnContextMenu()的实现

voidCMenuExamView::OnContextMenu(CWnd*pWnd,CPointpoint){

CMenuPopupMenu;//定义菜单对象

PopupMenu.LoadMenu(IDR_POPUP_MENU); PopupMenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);//弹出上下文菜单}1810.1.6 为菜单增加快捷键和加速键在应用程序中,可以为每个菜单项增加快捷键和加速键。所谓快捷键就是当包含该菜单项的菜单被打开时,直接按某指定的键等同于用鼠标单击该菜单项。所谓加速键就是在没有打开包含该菜单项的菜单时,按组合键Ctrl+某指定键等价于用鼠标单击该菜单项。1.快捷键的设置

打开菜单资源编辑器,双击“饼图”,修改Caption编辑框的标题为“饼图(&P)\tCtrl+T”。2.加速键的设置(1)在WorkSpace窗口中选择ResourceView选项卡,单击Accelerator项前面的“+”号,双击展开的列表项中的IDR_MAINFRAME,出现加速键资源编辑器。(2)双击加速键列表项最下面的空白项,,单击ID组合框的下拉按钮,从下拉列表中选择ID_GRAPH_PIE,在Key组合框中输入大写字母T。1910.2 工具栏

本节内容

10.2.1工具栏简介

10.2.2一个使用工具栏的应用程序

10.2.3创建工具栏资源模板

10.2.4工具栏类CToolBar10.2.5在应用程序框架中创建工具栏对象10.2.6工具栏的消息处理机制

2010.2.1 工具栏简介

工具栏为用户提供了程序命令的直接访问方式,工具栏中包含有一些水平排放的图形按钮,当用一次鼠标单击它们时就发送相应的命令消息。

从编程角度看,工具栏就是一个子窗口,它显示一系列位图按钮。由于工具栏按钮一般对应着某个菜单选项,因此工具栏的某个按钮和菜单的某个选项除了创建的方式和在界面的显示方式不一样外,对于消息的响应都是一样的。

工具栏和状态栏对象一般作为框架窗口类的成员变量声明,在创建框架窗口时自动创建它们,在销毁框架窗口时自动销毁所创建的控件栏对象。使用AppWizard创建了应用程序的基本框架后,也就建立了初始的工具栏和状态栏对象。2110.2.2 一个使用工具栏的应用程序

【例10-2】利用应用程序向导MFCAppWizard(exe)创建一个单文档的应用程序,实现工具栏的操作。1.生成步骤

模仿10.1.1节中的方法,利用应用程序向导MFCAppWizard(exe)创建一个单文档的应用程序框架,该工程的名称为ToolBarExam,所有的步骤都采用缺省的设置。2.程序功能

本程序是一个演示工具栏的单文档应用程序。当程序运行后,在工具栏上有自己新设计的两个工具条按钮,单击一个,可以重新启动计算机,单击另一个,可以把当前的鼠标样子变成一个动画图形。3.技术要点

本程序主要掌握工具栏资源的建立方法,工具栏对命令消息的响应,熟悉一些API函数的用法,体会VC对系统的控制。2210.2.3创建工具栏资源模板

工具栏也是一种资源,因此使用工具栏的首要工作是利用VC的可视化的资源编辑器进行工具栏资源的创建与保存,下面为创建与编辑工具栏资源的步骤。

1.打开刚才创建的工程ToolBarExam。2.在WorkSpace窗口中选择ResourceView选项卡,单击ToolBar项前面的“+”号展开工具栏资源项目,系统默认的工具栏的ID值为IDR_MAINFRAM。双击IDR_MAINFRAM,VC以设计模式显示出工具条,注意,若想删除无用的工具栏按钮,只需把无用的按钮脱离工具栏即可。3.我们在工具条最右边的空白图标中增加两个新图标,双击创建好的图标,弹出属性对话框,设定该两个工具条按钮的ID为ID_QUIT_WINDOWS和ID_CARTOON,同时在提示栏Prompt中输入“重新启动Windows操作系统\n重新启动”和”装载动画鼠标图形\n动画图标”。2310.2.4 工具栏类CToolBar

类CToolBar提供了带有位图按钮和可选分隔符的工具栏,工具栏按钮有下压式、复选框按钮或单选按钮。CToolBar对象通常是做为派生类CFrameWnd或CMDIFrameWnd框架窗口的对象成员,利用AppWizard创建应用程序框架时,在框架类中已创建了一个CToolBar对象。

MFC的工具栏类CToolBar是创建用来接收某些命令键入并向用户显示状态信息的类,利用它可以立即访问程序命令。从编程的角度看,工具栏是一个显示一系列位图按钮的子窗口,一旦创建了工具栏并使其可见,就可以用操作窗口的方法来操作它。工具栏的按钮和菜单或加速键一样,单击他们都生成WM_COMMAND消息,并且工具栏的命令ID与菜单或加速键的命令ID相同。下面为该类中几个重要的函数说明。24

1.Create()函数Create()函数用于创建一个Windows工具栏,并将其连接到CToolBar对象上,同时设置工具条的默认高度。该函数的原型如下:BOOLCreate(CWnd*pParentWnd,DWORDdwStyle=WS_CHILD|WS_VISIBLE|CBRS_TOP,UINTnID=AFX_IDW_TOOLBAR);2.LoadToolBar()函数该函数装载指定的工具栏资源,它的原型为:BOOLLoadToolBar(LPCTSTRlpszResourceName);BOOLLoadToolBar(UINTnIDResource);2510.2.5 在应用程序框架中创建

工具栏对象

在利用MFCAppWizard生成的单文档应用程序中,工具栏对象的创建是在应用程序框架类中,可以说应用程序框架类的一个主要功能就是管理工具栏和状态栏。1.在框架类CMainFrame类中声明工具栏对象打开上一节所生成的应用程序。在WorkSpace窗口中选择ClasseView选项卡,用鼠标双击类视图中的CMainFrame类,程序将定位到该类对应的头文件MainFrm.h中,下面为该类的头文件中有关框架类的声明的内容,所有代码都是自动生成的,请利用上一篇所讲的面向对象理论知识对它进行分析。

点击代码26语句CToolBarm_wndToolBar;代表在框架类中有一个从CToolBar派生的对象_wndToolBar;语句CStatusBarm_wndStatusBar代表在框架类中有一个从状态栏类CStatusBar实例化一个状态栏对象m_wndStatusBar。2.在框架类CMainFrame类的实现文件中初始化工具栏对象

打开上一节所生成的应用程序。在WorkSpace窗口中选择ClasseView选项卡,用鼠标单击类视图中的CMainFrame类,将该类展开,双击框架类的OnCreate成员函数,程序将自动定位到该类对应的实现文件MainFrm.cpp中的OnCreate的实现处。下面为该类的消息响应函数OnCreate的主要内容(WM_CREATE的响应函数),所有代码都是自动生成的。点击代码2710.2.6工具栏的消息处理机制

若一个工具栏按钮的资源ID与菜单选项的资源ID一样时,单击工具栏按钮与选择该菜单发出的消息都一样。该命令消息可以像菜单消息一样进行消息的传递,因此在菜单一章中讲的命令消息的传递机制也同样适合于工具栏消息。工具栏要处理的两个主要消息是WM_COMMAND和UPDATE_COMMAND_UI。和菜单一样,应用程序是通过提供消息映射函数来处理单击工具栏按钮所产生的命令,如果工具栏的某个按钮没有消息COMMAND或UPDATE_COMMAND_UI对应的处理函数,那么框架自动使该按钮无效。下面我们在视图类中添加对工具栏按钮ID_QUIT_WINDOWS和ID_CARTOON的消息响应函数,添加的方法和对菜单的单击一样,参见10.1.5节的叙述。点击代码2810.3 状态栏

本节内容

10.3.1状态栏简介10.3.2一个使用状态栏的应用程序10.3.3状态栏类CStatuslBar10.3.4在应用程序框架中创建状态栏对象10.3.5创建字符串资源10.3.6

状态栏的消息处理29

10.3.1 状态栏简介

状态栏是显示在应用程序主窗口底部的的一个多区域子窗口,用于显示文本信息。状态栏中的子窗口可以分为状态信息行和状态指示器,如图10.10所示。状态信息行显示应用程序动态提供的字符串,例如单击菜单的命令提示信息,状态指示器显示一些状态信息,如键盘某些键的状态如Capslock键的状态。AppWizard创建应用程序时,一般自动添加状态栏,程序员在编程的过程中只需在原有的状态栏的基础上适当修改即可。3010.3.1状态栏

图10.10Word软件中的状态栏

3110.3.2一个使用状态栏的应用程序【例10-3】利用应用程序向导MFCAppWizard(exe)创建一个单文档的应用程序,实现状态栏的操作。1.程序功能

本程序是在上一节将的程序基础上添加一个演示状态栏的功能。当程序运行后,在状态栏的信息提示行上显示鼠标在屏幕上的位置,在状态栏指示器的最右端显示系统的时间。2.技术要点

本程序主要练习状态栏牵涉的字符串资源的的建立方法,状态栏对更新命令用户接口消息的响应,熟悉自己在类中添加消息映射的方法,熟悉MFC对状态栏的支持。

3210.3.3 状态栏类CStatuslBar

MFC的CStatusBar类用来实现状态栏的功能,CStatusBar类为CControlBar类的派生类,它定义了一个默认的构造函数和一个Create()成员函数。CStatusBar::Create()函数用于创建一个Windows状态栏(子窗口),置初始字体和状态栏的高度,该函数原型为:

BoolCreate(CWnd*pParentWnd,DWORDdwStyle=WS_CHILD|WS_VISIBLE|CBRS_BOTTOM,UINTnID=AFX_IDW_STATUS_BAR);

CStatusBar类还提供一系列成员函数来管理状态栏的指示器,主要有:1.SetIndicators()函数

函数SetIndicators()用于设置指示器ID,并装入由每个ID指定的字符串资源,然后将指示器的文字设置为该字符串,该函数的原型为:

BOOLSetIndicators(constUINT*lpIDArray,intnIDCount);33

2.SetPaneInfo()函数

数SetPaneInfo()用于设置给定索引值的指示器ID、风格和宽度。它的原型为:

voidSetPaneInfo(intnIndex,UINTnID,UINTnStyle,intcxWidth);该函数给标识符栏设置一个新的ID、风格和宽度。

3.SetPaneText()函数

函数SetPaneText()用于设置给定索引值的指示器的文本,它的原型为:

BOOLSetPaneText(intnIndex,LPCTSTRlpszNewText,BOOLbUpdate=TRUE);该函数用lpszNewText所指向的字符串来设置状态栏的文字。3410.3.4 在应用程序框架中

创建状态栏对象

在利用MFCAppWizard生成的单文档应用程序中,状态栏对象的创建是在应用程序框架类中。可以说应用程序框架类的一个主要功能就是管理工具栏和状态栏的。因此该节的程序代码请参照10.3.4节内容。1.在框架类CMainFrame类的.h头文件中声明状态栏对象

在MFC的应用程序中,状态栏的声明在在框架类CMainFrame类的头文件Mainframe.h中。一般情况在,一个状态栏声明为框架窗口的受保护的CStatusBar成员变量:protected:CStatusBarm_wndStatusBar;

2.在框架类CMainFrame类.cpp初始化状态栏对象

状态栏的创建和初始化工作是由该框架窗口在它的OnCreate()函数中完成。Mainfrm.cpp中的OnCreate()函数下35if(!m_wndStatusBar.Create(this)||!m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT))){ TRACE0("Failedtocreatestatusbar\n");eturn-1; }上述代码的主要功能是调用状态栏对象m_wndStatusBar的成员函数.Create()创建该对象,并且调用状态栏类的成员函数SetIndicators()设置状态栏的提示信息和指示器的信息。当创建应用程序的基本框架时,AppWizard会在主边框窗口类(CMainFram)中创建类似以下的提示符数组:staticUINTindicators[]={ ID_SEPARATOR,//状态行指示器

ID_INDICATOR_CAPS,ID_INDICATOR_NUM, ID_INDICATOR_SCRL,};3610.3.5创建字符串资源

字符串表也是一种Windows的资源。它包含了应用程序所有字符串的ID号、ID号的数值和字符串内容。使用字符字符串的好处是有利于将应用程序本地化。要编辑应用程序的字符串资源,可激活WorkSpace窗口的ResourceView栏,双击StringTable进入字符串资源编辑器中。在其中插入一个字符串资源ID_INDICATOR_TIME。如图37

添加完字符串资源后,激活WorkSpace窗口的FileView栏,双击SourceFiles文件夹下的mainfrm.cpp,找到数组indicators[]的定义,将该字符串资源添加到该数组中。staticUINTindicators[]={ ID_SEPARATOR,//statuslineindicator ID_INDICATOR_CAPS,//CapsLock键状态

ID_INDICATOR_NUM,//NumLock键状态

ID_INDICATOR_SCRL,//ScrollLock键状态

ID_INDICATOR_TIME//手工添加的显示时间的字符串资源ID};

3810.3.6 状态栏的消息处理本节的程序主要讲解状态栏的使用,状态栏中的子窗口可以分为状态信息行和状态指示器,我们按照状态信息行的消息处理和状态指示器的消息处理来阐述。

1.状态信息行的消息处理

许多应用程序都有这样的功能(如AutoCAD)当鼠标在屏幕上移动时,在程序的状态栏上显示鼠标的位置,本节的例子首先要实现该功能。因为鼠标在屏幕移动,这牵涉到WM_MOUSEMOVE消息的处理,因此在状态栏上显示鼠标的位置就是在该消息的响应函数中添加对状态信息行的处理。利用类向导ClassWizard添加视图类CToolBarExam对WM_MOUSEMOVE的消息映射,在该消息响应函数中添加获取鼠标的光标位置的代码:39在代码中,使用CWnd的GetDescendantWindow()函数返回一个指向ID_VIEW_STATUS_BAR状态栏的指针,然后使用状态栏成员函数SetPaneText为第0个信息框赋值(注意本程序只能给一个信息框赋值,调用成员函数SetPaneStyle(0,SBPS_POPOUT)将该信息提示框设置成凸起风格。2.状态指示器的消息处理

状态指示器总是与一个字符串资源连接的(10.3.5节创建的ID_INDICATOR_TIME),该字符串是否被显示完全取决于相应更新命令用户接口消息映射函数。指示器是由一个字符串资源ID来标识的,该ID也被用来传递更新命令用户接口消息,因此状态指示器的消息处理主要指对UPDATE_COMMAND_UI消息的映射处理。40(1)声明消息映射函数

在框架类的头文件Mainfrm.h中,找到该类的所有消息映射函数原型的说明,增加ID_INDICATOR_TIME字符串资源ID对UPDATE_COMMAND_UI消息的映射函数OnUpdateTime()原型声明,添加后的代码如下:protected: //{{AFX_MSG(CMainFrame) afx_msgintOnCreate

温馨提示

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

评论

0/150

提交评论