面向对想程序设计.ppt_第1页
面向对想程序设计.ppt_第2页
面向对想程序设计.ppt_第3页
面向对想程序设计.ppt_第4页
面向对想程序设计.ppt_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

Windows编程基础 Windows编程基础 Windows程序内部运行原理SDK方式编写Windows应用程序Windows应用程序特性 CH1 1Windows程序内部运行原理 目标 理解Windows程序的运行机制掌握以下基本概念窗口WindowsAPI消息与消息机制消息响应句柄 Windows应用程序 操作系统 计算机硬件输入输出设备之间的相互关系 WindowsAPI 操作系统所能够完成的每一个特殊功能通常都有一个函数与其对应 也就是说 操作系统把它所能够完成的功能以函数的形式提供给应用程序使用 应用程序对这些函数的调用就叫做系统调用 Systemcall 这些函数的集合就是Windows操作系统提供给应用程序编程的接口 ApplicationProgrammingInterface 简称WindowsAPI WindowsAPI WindowsAPI的作用是Windows系统与Windows应用程序间的标准程序接口Windows应用程序可以利用标准大量API函数调用系统功能窗口管理函数 实现窗口的创建 移动和修改功能系统服务函数 实现与操作系统有关的多种功能图形设备 GDI 函数 实现与设备无关的图形操作功能 消息响应 操作系统能够感知输入设备的变化 事件 并且能够知道具体的事件情况 但操作系统并不决定对这一事件如何作出反应 而是将这一事件转交给应用程序 由应用程序决定如何对这一事件作出反应 对事件作出反应的过程就是消息响应 消息 操作系统是怎样将感知到的事件传递给应用程序的呢 这是通过消息机制 Message 来实现的 操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序 消息结构体 MSG结构定义如下 typedefstructtagMSG HWNDhwnd 窗口句柄UINTmessage 主消息WPARAMwParam 附加消息LPARAMlParam DWORDtime 送至队列的时间POINTpt 消息发送时屏幕光标的位置 MSG PMSG 第一个成员变量hwnd表示消息所属的窗口 我们通常开发的程序都是窗口应用程序 一个消息一般都是与某个窗口相关联的 例如 在某个活动窗口中按下鼠标左键 产生的按键消息就是发给该窗口的 在Windows程序中 用HWND类型的变量来标识窗口 第二个成员变量message指定了消息的标识符 在Windows中 消息是由一个数值来表示的 不同的消息对应不同的数值 但是由于数值不便于记忆 所以Windows将消息对应的数值定义为WM XXX宏 WM是WindowMessage的缩写 的形式 XXX对应某种消息的英文拼写的大写形式 例如 鼠标左键按下消息是WM LBUTTONDOWN 键盘按下消息是WM KEYDOWN 字符消息是WM CHAR 等等 在程序中我们通常都是以WM XXX宏的形式来使用消息的 提示 如果想知道WM XXX消息对应的具体数值 可以在VisualC 开发环境中选中WM XXX 然后单击鼠标右键 在弹出菜单中选择gotodefinition 即可看到该宏的具体定义 跟踪或查看某个变量的定义 都可以使用这个方法 第三 第四个成员变量wParam和lParam 用于指定消息的附加信息 例如 当我们收到一个字符消息的时候 message成员变量的值就是WM CHAR 但用户到底输入的是什么字符 那么就由wParam和lParam来说明 wParam lParam表示的信息随消息的不同而不同 如果想知道这两个成员变量具体表示的信息 可以在MSDN中关于某个具体消息的说明文档查看到 读者可以在VC 的开发环境中通过gotodefinition查看一下WPARAM和LPARAM这两种类型的定义 可以发现这两种类型实际上就是unsignedint和long 最后两个变量分别表示消息投递到消息队列中的时间和鼠标的当前位置 从变量的类型区分变量的用途 intx y x 50 y 30 x和y既可以用来表示坐标点 也可以用来表示宽度和高度 还可以用来表示身高和体重等等 typedefintWIDTHtypedefintHEIGHTWIDTHx HEIGHTy 好处 我们从变量的类型上就可以知道x和y是用来表示宽度和高度 Windows对象 Windows窗口是Windows系统的一个内部数据结构的实例 由一个 窗口句柄 标识 Windows系统创建它并给它分配系统资源 WindowsObject是Windows系统的内部结构 是Windows的规范部件 包括各种窗口 菜单 按钮 对话框以及程序模块等 通过一个句柄来引用 句柄 Handle 句柄 HANDLE Windows用来标识被应用程序建立或使用的Windows对象的一个唯一的整数值 操作系统要管理和操作这些Windows对象 资源 都是通过句柄来找到对应的对象 按Windows对象的类型 又可将句柄细分成图标句柄 HICON 光标句柄 HCURSOR 窗口句柄 HWND 应用程序实例句柄 HINSTANCE 等等各种类型的句柄 操作系统给每一个窗口指定的一个唯一的标识号 整数值 即窗口句柄 消息结构体 typedefstructtagMSG HWNDhwnd 窗口句柄UINTmessage 主消息WPARAMwParam 附加消息LPARAMlParam DWORDtime 送至队列的时间POINTpt 消息发送时屏幕光标的位置 MSG PMSG 主消息 由事先定义好的消息名标识采用不同的前缀符号来区别能够解释和处理消息的窗口类型WM 窗口消息BM 按钮控制消息CB 组合框控制消息DM 默认下压式按钮控制消息EM 编辑控制消息LB 列表框控制消息SMB 滚动条控制消息 附加消息 与主消息有关wParamlParam 消息结构体 typedefstructtagMSG HWNDhwnd 窗口句柄UINTmessage 主消息WPARAMwParam 附加消息LPARAMlParam DWORDtime 送至队列的时间POINTpt 消息发送时屏幕光标的位置 MSG PMSG 消息结构体 对于MSG这个结构体来说 它里面包含的信息是相当丰富的 它包含了对于一个消息来说 它和哪一个窗口相关 这个消息本身是什么 这个消息的附加参数是什么 消息发生投递的时间是什么 我们拿到这样一个消息就像当全面了 那么我们就知道应该做什么样的处理 Windows应用程序 操作系统 计算机硬件输入输出设备之间的相互关系 消息队列 对于每一个应用程序 操作系统会给它建立一个消息队列 这个队列实际上是一个先进先出的缓冲区 通常是一个某种变量类型的数组 消息队列中的每个元素都是一条消息 操作系统将生成的每个消息按先后顺序放进消息队列中 应用程序总是依次取走队列里的第一条消息 应用程序取走消息后便能够知道用户的操作和程序状态的变化 从而对特定的消息进行处理 编写代码 消息响应 应用程序获得的消息 进队消息进队消息是由Windows放入程序的消息队列中的不进队消息不进队消息直接发送给窗口过程 CH1 2SDK方式编写Windows应用程序 目标 能够用SDK WindowsAPI C C 编写一个简单的Windows应用程序 通过编写程序掌握Windows程序的运行原理及编写方式 为MFC的学习打下基础 掌握以下基本知识 Windows应用程序基本结构 程序执行的起点 入口函数 main WinMain WinMain函数 Windows程序的入口函数intWINAPIWinMain HINSTANCEhInstance handletocurrentinstanceHINSTANCEhPrevInstance handletopreviousinstanceLPSTRlpCmdLine commandlineintnCmdShow showstate 匈牙利表示法 一种命名约定匈牙利命名法是微软推广的一种关于变量 函数 对象 前缀 宏定义等各种类型的符号的命名规范 匈牙利命名法的主要思想是 在变量和函数名中加入前缀以增进人们对程序的理解 为纪念Microsoft程序员CharlesSimonyi所使用的命名约定 命名约定 常用的命名约定有三种 Unix环境常用的命名法my age num of student驼峰式命名法myAge numOfStudent匈牙利标记法iMyCar bIsRight WinMain函数 Windows程序的入口函数intWINAPIWinMain HINSTANCEhInstance handletocurrentinstanceHINSTANCEhPrevInstance handletopreviousinstanceLPSTRlpCmdLine commandlineintnCmdShow showstate 函数调用约定 函数调用是通过堆栈来实现的 在调用时 将参数值和调用后的返回地址压入所分配的堆栈空间中 函数计算结束以后 或者调用者 或者函数本身修改堆栈 使堆栈恢复原装 在参数传递中 有两个很重要的问题必须得到明确说明 当参数个数多于一个时 按照什么顺序把参数压入堆栈函数调用后 由谁来把堆栈恢复原装 堆栈清除 main 调fun 结束 fun 返回 保存 返回地址当前现场 恢复 主调程序现场返回地址 函数的调用 窗口的创建 创建一个完整的窗口需要经过下面四个操作步骤 设计一个窗口类 注册窗口类 创建窗口 显示及更新窗口 创建窗口 第一步 窗口类的定义 WNDCLASS typedefstructtagWNDCLASS UINTstyle 窗口类风格WNDPROClpfnWndProc 窗口过程函数intcbClsExtra 在类结构中预留的空间intcbWndExtra 在Windows内部预留空间HINSTANCEhInstance 程序实例句柄HICONhIcon 窗口的图标HCURSORhCursor 光标句柄HBRUSHhbrBackground 背景色LPCTSTRlpszMenuName 窗口类菜单LPCTSTRlpszClassName 窗口类名 WNDCLASS PWNDCLASS 窗口类的类型 在我们的程序中经常要用到一类变量 这个变量里的每一位 bit 都对应某一种特性 当该变量的某位为1时 表示有该位对应的那种特性 当该位为0时 即没有该位所对应的特性 当变量中的某几位同时为1时 就表示同时具有几种特性的组合 一个变量中的哪一位代表哪种意义 不容易记忆 所以我们经常根据特征的英文拼写的大写去定义一些宏 该宏所对应的数值中仅有与该特征相对应的那一位 bit 为1 其余的bit都为0 如果我们希望某一变量的数值既有CS VREDRAW特性 又有CS HREDRAW特性 我们只需使用二进制OR 操作符将他们进行或运算相组合 如style CS VREDRAW CS HREDRAW CS NOCLOSE 如果我们希望在某一变量原有的几个特征上去掉其中一个特征 用取反 之后再进行与 运算 就能够实现 如在刚才的style的基础上去掉CS NOCLOSE特征 可以用style CS NOCLOSE实现 窗口类的类型 创建窗口 第一步 窗口类的定义 WNDCLASS typedefstructtagWNDCLASS UINTstyle 窗口类风格WNDPROClpfnWndProc 窗口过程函数intcbClsExtra 在类结构中预留的空间intcbWndExtra 在Windows内部预留空间HINSTANCEhInstance 程序实例句柄HICONhIcon 窗口的图标HCURSORhCursor 光标句柄HBRUSHhbrBackground 背景色LPCTSTRlpszMenuName 窗口类菜单LPCTSTRlpszClassName 窗口类名 WNDCLASS PWNDCLASS 窗口过程函数 窗口过程函数用来对消息进行处理第二个成员变量lpfnWndProc指定了这一类型窗口的过程函数 也称回调函数 回调函数 当应用程序收到给某一窗口的消息时 还记得前面讲过的消息通常与窗口相关的吗 就应该调用某一函数来处理这条消息 这一调用过程不用应用程序自己来实施 而由操作系统来完成 但是 回调函数本身的代码必须由应用程序自己完成 窗口过程函数 对于一条消息 操作系统到底调用应用程序中的哪个函数 回调函数 来处理呢 操作系统调用的就是接受消息的窗口所属的类型中的lpfnWndProc成员指定的函数 每一种不同类型的窗口都有自己专用的回调函数 该函数就是通过lpfnWndProc成员指定的 创建窗口 第一步 窗口类的定义 WNDCLASS typedefstructtagWNDCLASS UINTstyle 窗口类风格WNDPROClpfnWndProc 窗口过程函数intcbClsExtra 在类结构中预留的空间intcbWndExtra 在Windows内部预留空间HINSTANCEhInstance 程序实例句柄HICONhIcon 窗口的图标HCURSORhCursor 光标句柄HBRUSHhbrBackground 背景色LPCTSTRlpszMenuName 窗口类菜单LPCTSTRlpszClassName 窗口类名 WNDCLASS PWNDCLASS WNDCLASS 类附加空间 cbClsExtra Windows为系统中每一个窗口类管理一个WNDCLASS结构 在应用程序注册一个窗口类时 它可以让Windows系统为该结构分配和追加一定字节数的附加内存空间 这部分内存称之为类附加内存 由属于这种窗口类的所有窗口共享 类附加内存空间用于存储类的附加信息 函数SetClassWord和SetClassLong用来把某一个值复制到类附加内存中 并可以通过GetClassWord和GetClassLong来检取这些值 WNDCLASS 窗口附加空间 cbWndExtra Windows为每一个窗口管理一个内部数据结构 在注册一个窗口类时 应用程序能够指定一定字节的附加内存空间 称为窗口附加内存 在创建这类窗口时 Windows系统就为窗口结构分配和追加指定数目的窗口附加内存空间 应用程序可以用这部分内存存储窗口特有的数据 函数SetWindowWord和SetWindowLong可以把某一个值复制到附加内存 函数GetWindowWord和GetWindowLong可以检取这些值 创建窗口 第一步 窗口类的定义 WNDCLASS typedefstructtagWNDCLASS UINTstyle 窗口类风格WNDPROClpfnWndProc 窗口过程函数intcbClsExtra 在类结构中预留的空间intcbWndExtra 在Windows内部预留空间HINSTANCEhInstance 程序实例句柄HICONhIcon 窗口的图标HCURSORhCursor 光标句柄HBRUSHhbrBackground 背景色LPCTSTRlpszMenuName 窗口类菜单LPCTSTRlpszClassName 窗口类名 WNDCLASS PWNDCLASS LoadIcon LoadIcon的作用是在应用程序中加载一个窗口图标 其原型为 HICONLoadIcon HINSTANCEhInstance LPCTSTRlpIconName 图标资源名或系统预定义图标标识名 图标资源所在的模块句柄 NULL则使用系统预定义图标 基于资源的程序设计 Windows程序分为 程序代码 和 用户接口 UI 资源 两大部分 程序代码使用编译器编译 用户接口资源使用资源编译器编译 最后两者使用连接器加上库文件可以生成可执行文件 基于资源的程序设计 用户接口 UI 资源是指功能菜单 对话框 程序图标 光标等资源 它是Windows应用程序界面的重要组成部分 资源的使用极大方便了应用程序界面的设计 也大大方便了应用程序与用户的交互 这些用户资源的实际内容 二进制代码 是借助各种工具产生的 并以各种扩展名的文件存在 如 ico bmp cur等 程序员必须在一个所谓的资源描述文档 rc 中描述它们 RC编译器读取RC文件的描述后 将所有用户接口资源文件集中制作一个 RES文件 这些资源可以使用VC 提供的资源编辑器来实现创建和编辑 资源 资源分类菜单WM COMMAND消息wParam低16位传递菜单项资源ID对话框WM COMMAND消息wParam低16位传递子窗口 控件 资源ID 资源ID资源的唯一标识 基于资源的程序设计 创建窗口 第一步 窗口类的定义 WNDCLASS typedefstructtagWNDCLASS UINTstyle 窗口类风格WNDPROClpfnWndProc 窗口过程函数intcbClsExtra 在类结构中预留的空间intcbWndExtra 在Windows内部预留空间HINSTANCEhInstance 程序实例句柄HICONhIcon 窗口的图标HCURSORhCursor 光标句柄HBRUSHhbrBackground 背景色LPCTSTRlpszMenuName 窗口类菜单LPCTSTRlpszClassName 窗口类名 WNDCLASS PWNDCLASS LoadCursor LoadCursor的作用是在应用程序中加载一个窗口光标 其原型为 HCURSORLoadCursor HINSTANCEhInstance LPCTSTRlpCursorName 光标资源所在的模块句柄 NULL则使用系统预定义光标 光标资源名或系统预定义光标标识名 创建窗口 第一步 窗口类的定义 WNDCLASS typedefstructtagWNDCLASS UINTstyle 窗口类风格WNDPROClpfnWndProc 窗口过程函数intcbClsExtra 在类结构中预留的空间intcbWndExtra 在Windows内部预留空间HINSTANCEhInstance 程序实例句柄HICONhIcon 窗口的图标HCURSORhCursor 光标句柄HBRUSHhbrBackground 背景色LPCTSTRlpszMenuName 窗口类菜单LPCTSTRlpszClassName 窗口类名 WNDCLASS PWNDCLASS GetStockObject GetStockObject的作用是获取笔 画刷 调色板 字体的句柄 应用程序调用函数GetStockObject获取系统提供的背景刷 其原型为 HGDIOBJGetStockObject intfnObject typeofstockobject 创建窗口 第一步 窗口类的定义 WNDCLASS typedefstructtagWNDCLASS UINTstyle 窗口类风格WNDPROClpfnWndProc 窗口过程函数intcbClsExtra 在类结构中预留的空间intcbWndExtra 在Windows内部预留空间HINSTANCEhInstance 程序实例句柄HICONhIcon 窗口的图标HCURSORhCursor 光标句柄HBRUSHhbrBackground 背景色LPCTSTRlpszMenuName 窗口类菜单LPCTSTRlpszClassName 窗口类名 WNDCLASS PWNDCLASS 菜单 Windows应用程序加载菜单的方法 在窗口类的定义中加载菜单资源wndcls lpszMenuName MAKEINTRESOURCE IDR MENU1 在创建窗口时加载菜单HMENUhMenu hMenu LoadMenu hInstance MAKEINTRESOURCE IDR MENU1 动态加载菜单 应用程序通过调用函数LoadMenu获取菜单句柄后 还可通过SetMenu动态加载菜单 创建窗口 第二步 注册窗口类 RegisterClass ATOMRegisterClass CONSTWNDCLASS lpWndClass 创建窗口 第三步 创建窗口实例 CreateWindow HWNDCreateWindow LPCTSTRlpszClassName 窗口类名LPCTSTRlpszTitle 窗口标题名DWORDdwStyle 创建窗口的样式intx y 窗口左上角坐标intnWidth nHeight 窗口宽度和度高HWNDhwndParent 该窗口的父窗口句柄HWENUhMenu 窗口主菜单句柄HINSTANCEhInstance 创建窗口的应用程序当前句柄LPVOIDlpParam 指向一个传递给窗口的参数值的指针 窗口样式 菜单 Windows应用程序加载菜单的方法 在窗口类的定义中加载菜单资源wndcls lpszMenuName MAKEINTRESOURCE IDR MENU1 在创建窗口时加载菜单HMENUhMenu hMenu LoadMenu hInstance MAKEINTRESOURCE IDR MENU1 动态加载菜单 应用程序通过调用函数LoadMenu获取菜单句柄后 还可通过SetMenu动态加载菜单 创建窗口 第四步 显示窗口 ShowWindow BOOLShowWindow HWNDhWnd intnCmdShow 创建窗口 第五步 刷新窗口 UpdateWindow BOOLUpdateWindow HWNDhWnd 显示窗口后 应用程序调用UpdateWindow更新并绘制用户区 并发出WM PAINT消息 UpdateWindow hwnd 建立消息循环 Windows应用程序的运行以消息为核心 应用程序必须读取应用程序消息队列 检索消息并将它们发送出去 以便适当的窗口函数能够处理它们 完成这一任务的便是消息循环 建立消息循环 从消息队列中获取消息GetMessage翻译消息和派遣消息TranslateMessageDispatchMessage 建立消息循环 GetMessage 从消息队列中读取一条消息 并将消息放在MSG结构中 其中函数GetMessage形式为 GetMessage lpMSG 指向MSG结构的指针hwnd nMsgFilteMin 用于消息过滤的最小消息号值nMsgFilterMax 用于消息过滤的最大消息号值 返回零值 即检索到WM QUIT消息 程序结束循环并退出 窗口过程 窗口过程函数用来对消息进行处理 LRESULTCALLBACKWndProc HWNDhWnd UINTmessage WPARAMwParam LPARAMlParam 窗口函数的一般形式如下 LRESULTCALLBACKWndProc HWNDhwnd UINTmessgae WPARAMwParam LPARAMlParam switch message message为标识的消息 case break caseWM DESTROY PostQuitMessage 0 default returnDefWindowProc hwnd message wParam lParam return 0 在消息处理程序段中一般都有对WM DESTROY的处理 该消息是关闭窗口时发出的 它向应用程序发出WM QUIT消息 请求退出处理函数 voidPostQuitMessage intnExitCode nExitCode为应用程序的退出代码 为未定义处理过程的消息提供缺省处理 程序执行流程 格式化字符串函数 格式化字符串的函数sprintfstdio h charszChar 20 sprintf szChar charis d wParam MessageBox函数 用于显示信息 int 返回用户所选按钮代表的数值MessageBox HWNDhWnd 窗口句柄LPCTSTRlpText 消息框主体显示的文本LPCTSTRlpCaption 消息框标题栏显示文本UINTuType 代表消息框风格的常数组合 消息框风格 以MB 开始的常数组合代表消息框的风格多种风格之间用 分隔 if IDOK MessageBox NULL 是否退出本程序 退出 MB OKCANCEL MB ICONQUESTION MessageBox NULL 再见 退出 MB OK GDI简介 图形设备接口 Windows应用程序中的图形输出流程应用程序提出绘图请求GDI接受请求并传递给对应设备的驱动程序设备驱动程序完成特定的硬件输出 GDI简介 绘图机制绘图函数 如 Ellipse TextOut 绘图工具 画笔 画刷等 GDIObject 设备上下文 绘图环境 DeviceContext 获得绘图环境 构造绘图工具 绘图 应用程序每一次文字图形操作均参照设备描述表中的属性进行 设备描述表描述了特定输出设备状态 文本和图形的绘图参数等 包括设备上可使用的输出区域 逻辑坐标系 选定何种绘图工具绘图 绘图前景色 填充色 字体 字体颜色 字的磅数等属性 设备描述表 Devicecontext 画笔 HPEN 创建画笔将画笔选入DC删除画笔资源 HPENhPen hPen CreatePen S SOLID 2 RGB 255 0 0 线形 线宽 颜色 SelectObject hdc hPen DeleteObject hPen 画刷 HBRUSH 创建画刷将画刷选入DC删除画刷资源 HBRUSHhBrush hBrush CreateSolidBrush RGB 255 0 0 SelectObject hdc hBrush DeleteObject hBrush GDI简介 要在窗口的客户区绘图 可以使用Windows的图形设备接口 GDI 函数每个GDI函数都需要将设备描述表句柄作为函数的第一个参数 例如DrawText HDC LPCTSTR int LPRECT UINT TextOut HDC int int LPCTSTR int 画线 画线LineToLineTo HDC int int 例 LineTo hdc 100 100 默认情况下从 0 0 开始画移动画笔MoveToExMoveToEx HDC int int LPPOINT 画其它图形 画椭圆Ellipse hdc 100 100 200 200 画圆角矩形RoundRect hdc 画弧Arc hdc 画饼Pie hdc 画矩形Rectangle HDC int int int int 获取设备描述表 方法一 该方法适合于处理非WM PAINT消息用GetDC获取设备描述表句柄用ReleaseDC释放设备描述表句柄这种获取设备描述表的一般方式如下 hdc GetDC hwnd ReleaseDC hwnd hdc WM PAINT消息 什么时候向窗口过程发送WM PAINT消息 窗口发生重绘 无效 的时候调用UpdateWindow函数刷新窗口窗口的全部或者部分失效的时候窗口从无到有手动刷新窗口调用InvalidateRect函数 获取设备描述表 方法二 该方法只适合于处理WM PAINT消息用BeginPaint 使无效窗口生效 并 返回设备描述表句柄 用EndPaint释放设备描述表句柄一般处理WM PAINT的形式如下 CaseWM PAINT hdc BeginPaint hwnd PAINTSTRUCT结构 Windows系统为每一个窗口建立了一个PAINTSTRUCT结构 该结构中包含了包围无效区域的一个最小矩形的结构RECT 应用程序可以根据这个无效区域执行更新的操作 PAINTSTRUCT结构体不需要我们维护 是系统内部维护的结构体 获取设备描述表 方法三 获取整个窗口的设备描述表用GetWindowDC获取整个窗口的设备描述表句柄用ReleaseDC释放设备描述表句柄 HDChdc Hd

温馨提示

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

评论

0/150

提交评论