CCMFC汇编常用语法_第1页
CCMFC汇编常用语法_第2页
CCMFC汇编常用语法_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、笔记Ever_Ki ng丄 ee联系我In dex、C、C+、MFC、汇编1.1、文件读写1.2、申请内存空间1.3、MFC EDIT控件输入输出数据1.4、微机汇编常用指令1.5、打开文件对话框示例1.6、存储文件对话框示例1.7、YUV与 RBG互换公式1.8、动态改变对话框标题1.9、单选/复选控件使用方法1.10、BMF位图显示方法1.11、截取Cstring中某一部分 例1.12、格式化CString数据1.13、CString数据写入到文件1.14、读取数据文件到 Cstring 对象1.15、绘图1.16、使按钮/菜单项失效和生效1.17、在EDIT控件中追加输出文本1.18、判

2、断MessageBo按下的按钮1.19、char * 和 CString 相互转换1.20、隐藏文件1.21、实现真彩色的按钮1.22、非模态对话框的创建与销毁1.23、移动和复制文件、C、C+微机汇编1.1、文件读写:1.1.1 标准C头文件:#include <stdio.h>变量声明:FILE *fp;文件打开:if(fpO=fope n( "E:sstude nts_0001.yuv","rb")=NULL)prin tf("Open file1 E:s0001.yuv erron");elseprin tf(&q

3、uot;Open file1 E:s0001.yuv success!n"); 从文件读入:fread(ybuf0,352,1,fp0);写到文件:fwrite(ybuf0,352,1,fp0);文件关闭:fclose(fp0);参考资源连接1.1.2 Visual studio 2005 MFC 下声明:CFile fp0 ;CStri ng file nam;file nam= "E:test1.bmp"打开文件:if(!fp0.Ope n(file nam,CFile:modeRead)TRACE("Ope n file1 erro!n"

4、);return;文件读:fp0.Read(headmap,54);文件写:fp0.Write(headmap,54);文件关闭:fp0.Close();1.2、申请内存空间1.2.1 标准C头文件:#include <stdio.h>声明变量:un sig ned char *buf0;申请空间:buf0= (un sig ned char *)malloc(352);释放:free(buf0);1.2.2 Visual studio 2005 MFC 下声明变量:un sig ned char *buf0;申请空间:buf0 = new un sig ned char 352;

5、释放: delete(buf0);1.3、MFC EDIT控件输入输出数据1.3.1手动添加变量*Dlg.h 文件->Class C*Dlg 定义要使用的变量,如int x ; *Dlg.cpp 文件 > C*Dlg:C*Dlg(CWnd* pPare nt /*=NULL*/):CDialog(C*Dlg:IDD, pPare nt) 赋初值-> void C*Dlg:DoDataExcha nge(CDataExcha nge* pDX)DDX_Text(pDX,IDC_EDIT1,x);关联到变量-> 其他函数中使用:UpdateData仃RUE);将控件中当前数

6、据输入到变量;UpdateData(FALSE);将当前变量值输出到控件显示。1.3.2 快速添加变量在 Edit Control 添加的控件上点击右键 ->Add varible ,在 variable type 中选择类型,在 Category (类别)里选择 Value 之后可以使用 int char 等数据类型。1.4 、微机汇编常用指令标识符: _asm 汇编语句 1.4.1 PXOR dst,src ;16Bytes 按位异或。142 MOVDQU xmmO,eax; 16Bytes 取 eax指向的 memory中数的数据。143 punpcklbw xmmO,xmm2P

7、-pack处理指令 16Byte , unpck 军包,L -处理低字节BW -将 byte 转成 Word ;指令运算过程 xmmO15.O = xmm27.O(H):xmmO7.O (L) , 类推144 packuswb xmm0,xmm2; pack 指令,US -无符号数,SS-有符号数, WB -将Word转成Byte数据。运算: xmm0 = xmm2:xmm0;1.5 、 打开文件对话框示例CFileDialog DlgyuvFile(TRUE,_T("yuv" ),NULL,OFN_HIDEREADONLY,_T"Y( UV File(*.yuv

8、)|*.yuv|"),NULL);if (IDOK = DlgyuvFile.DoModal()srcfilename=DlgyuvFile.GetPathName(); /Cstring *UpdateData(FALSE);elseMessageBox(_T( " 没有选择要打开的文件 ");return ;1.6、 存储文件对话框示例CFileDialog DlgbmpFile(FALSE,_T("bmp" ),NULL,OFN_OVERWRITEPROMPT,"_BTM( P File(*.Bmp)|*.Bmp|")

9、,NULL);if (IDOK = DlgbmpFile.DoModal()dstfilename = DlgbmpFile.GetPathName(); /Cstring *UpdateData(FALSE);elseMessageBox(_T( " 没有选择要存储的文件 ");return ;1.7、YUV与 RGBS换公式YUV4 :1 :1 转 RGB-24bitR= 1.0Y + 0 +1.402 (V-128)G= 1.0Y - 0.34413(U-128)-0.71414(V-128)B= 1.0Y + 1.772 (U-128)+0R=1.164*(Y-16

10、)+1.596*(Cr-128)G=1.164*(Y-16)-0.813*(Cr-128)-0.392*(Cb-128)B=1.164*(Y-16)+1.596*(Cr-128)RGB to YUVY =(0.257* R) +(0.504* G) +(0.098* B) +16Cr =V =(0.439* R) -(0.368*G)- (0.071* B) +128Cb =U =-(0.148* R) -(0.291*G)+ (0.439* B) +128YUV422toRGBB =1.164(Y- 16)+ 2.018(U-128)G =1.164(Y- 16)- 0.813(V-128)

11、-0.391(U -128)R =1.164(Y- 16)+ 1.596(V-128)1.8 、 动态改变对话框标题 方法: (1) public :virtual BOOL OnInitDialog(); / 函数 , 在相应对话框(如 loaded 对话框)的 相应头文件 中添加该项。 ( 2)BOOL loaded:OnInitDialog()SetWindowTextW(_T( "Hello " )+nameT+_T(" Welcome to DK System ! " );return TRUE; /在对应对话框(如loaded对话框)的.cp

12、p文件中单独添加该函数,其中nameT为Cstring类型。并返回一个值。1.9 单选 /复选控件使用方法单选控件使用方法使用方法一 :在工程中添加控件后 ,直接在控件的 Click 事件中写入需要的代码即可使用方法二 :1. 建立一个基于对话框的用用程序,在其中加入三个 Radio Button,ID 分别为 :IDC_RADIO1,IDC_RADIO2,IDC_RADIO32. 控件的初始化 :在对话框类的 OnInitDialog 中加入代码 :/相当于初始化CheckRadioButton(IDC_RADIO1,IDC_RADIO3,IDC_RADIO3);/第一个参数为该组的第一个单

13、选按钮的 ID/ 第二个参数为该组的最后一个单选按钮的 ID/ 第三个参数为该组中被选中的单选按钮的 ID3. 在加入一个 Button 控件 ,并为其写入 Click 事件代码 :int iRadioButton;iRadioButton=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3);if(iRadioButton=IDC_RADIO1)MessageBox("Click Button1");if(iRadioButton=IDC_RADIO2)MessageBox("Click Button2");if(i

14、RadioButton=IDC_RADIO3)MessageBox("Click Button3");其他说明 :Radio Button 成组使用时 ,只需保证在添加控件时资源号连续 ,并且第一个 Radio Button 的属性中 Group 被选中即可 . 这样就可以给这一组控件添加成员变量使用例:1. 建立一个基于对话框的应用程序,添加三个 Radio Button, 和一个 Button选中第一个 Radio Button 属性中的 Group2. 在 Button 的 Click 事件中添加代码 :UpdateData(TRUE);if(m_radio=0)Me

15、ssageBox("0");if(m_radio=1)MessageBox("1");if (m_radio=2)MessageBox("2");UpdateData(false);单选控件使用方法三1、对 同一组的第一个 Radio 控件添加 value 变量,类型为 int 。如为 int m_RadioGroup1; 在构造函数中初始化默认选中的 Radio 控件。 -1 为缺省值,即没有选中任何一个单选控件。 2、调用 UpdateData(TRUE) 之后变量 m_RadioGroup1 机会根据选中的单选按钮作出相应的变化

16、。 0 为选中组中第一个单选按钮。1 为选中组中第二个单选按钮。依次类推。复选控件使用方法1、对要控制的复选控件的 所有控件 添加 Control 变量,类型为 CButton 类型,如有两个复选按钮,分别 添加变量为 CButton m_Check1;CButton m_Check2;2、调用UpdateData(TRUE)之后,所添加的变量值会根据选中情况变化。1为该复选框被选中。0为未选中。1.10、BMP位图显示方法首先在头文件中定义:CString m_strpath; / 文件路径int m_nWidth; / 显示的宽度int m_nHeight; / 显示的高度之后赋值: (如

17、新建一个对话框用于图片文件选择和输入参数)COpen dlgopen;/ 显示图片选择和设定对话框,设定好后显示图片if(IDOK = dlgopen.DoModal()m_strpath = dlgopen.m_strPath;m_nHeight = dlgopen.m_Height;m_nWidth = dlgopen.m_Width;之后在 void C*Dlg:OnPaint() 函数中(或其他函数)输入输入图片显示语句if ( m_strpath != "" )m_nWidth = 176;m_nHeight =144; /手动输入显示图像的宽和高HDC dest

18、hdc = this ->GetDC()->GetSafeHdc(); / 定义一个设备上下文的句柄HBITMAP hbitmap;hbitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),m_strpath,IMAGE_BITMAP, m_nWidth, m_nHeight,LR_LOADFROMFILE|LR_CREATEDIBSECTION);HDC srchdc = CreateCompatibleDC(desthdc);SelectObject(srchdc, (HGDIOBJ)hbitmap);BitBlt(desthdc,

19、 320, 140, m_nWidth, m_nHeight, srchdc, 0, 0, SRCCOPY);DeleteDC(srchdc);DeleteDC(desthdc); /OnPaint() 函数在对话框建立的时候会自动执行一遍,之后不再自动执行/ 其中 BitBlt(desthdc, 0, 0, 第一个 0为显示起始位置的 x 坐标,/ 即距离工作区域最顶端的横向位置/ 第二个 0 为 y 坐标。 在需要显示图片的地方加入下列语句,以更新显示图片 m_strpath = newfile; / 给定图片路径及文件名 RECT clientRect; / 定义矩形区域变量。/ 以下代

20、码重绘图片GetClientRect(&clientRect);/该函数获取窗口客户区的坐标。客户区坐标指定客户区的左上角/和右下角。由于客户区坐标是相对子窗口客户区的左上角而言的,因此左上角坐标为(0, 0)/ 在 Visual Studio 2005 中,该函数的原型为 void GetWi ndowRect(LPRECT IpRect)InvaIidateRect(&clientRect,TRUE); /该函数向指定的窗体添加一个无效矩形以用来更新该区域。/窗口客户的无效矩形所代表的区域必须会被重绘。也就时相当于重新调用了OnPaint ()函数若要在对话框中显示图片可用

21、下列方法:CDC* pdc = Center:GetDC();/ Center为当前对话框的类。例如,主对话框为C*DlgCBitmap bitmap;CDC dcMemory;bitmap.LoadBitmap(BmplD);/BmpID 为图片ID,也可以是图片文件的完整路径(包括文件名.bmp)dcMemory.CreateCompatibleDC(pdc);dcMemory.SelectObject(&bitmap);pdc->BitBlt(10,10,80,100, &dcMemory,0,0,SRCCOPY);1.11、 截取 Cstring 中某一部分(举例

22、)m_strpath原串,ViewFile 目的串。截取最后一个之后的部分:ViewFile = m_strpath.Right(m_strpath.GetLength()-m_strpath.ReverseFind('')-1);/ 不包括斜杠说明: m_strpath.ReverseFind(char ch);/倒叙查找字符ch在m_strpath中从零开始的索引(下标),可以为字符串。m_strpath.GetLength();/ 得到串总长度m_strpath.Right(int n);/ 从最右端截取n个字符,返回Cstring类的类型。以下类推。截取最后一个之前的部

23、分ViewFile = m_strpath. Left(m_strpath.ReverseFind('')+1);截取第一个''的之前(之后)的部分时,只需把 ReverseFind改成Find即可。1.12、格式化CString数据举例:OutPutString.Format(_T( "图像已定位到(%d ,%d)位置处rn 点击确定返回。”),z,zy);这样如果z = 1000,zy = 100 ,_则OutPutString 就变成了 _T(”图像已定位到(1000 ,100 )位置处rn点击确定返回。") 其中所有格式控制符和转义字

24、符均与printf的含义一样。1.13、CString数据写入到文件关于CString类型数据读写到文件时的注意:CString在写入到文件时会多写入一个32bit(4Byte)的串开始标识符,通常在记事本中显示为“ ? ”。用来判断一个 CString对象的 开始。而在读取时该标识符不会读到 CString对象中。CString的成员函数GetLength()得 到的是字符串中包含的字符数,在使用Uni code编码时无论是什么字符都包含两个字节。所 以在使用GetLength()函数作为字节偏移量时,要左移1位。CString数据写入到文件示例一:/文件原内容将被清除。UpdateData

25、(TRUE);CString dstfilename;CFileDialog DlgbmpFile(FALSE,_T( "txt" ),NULL,OFN_OVERWRITEPROMPT,_T(xt File(*.txt)|*.txt|"),NULL);if (IDOK = DlgbmpFile.DoModal()dstfilename = DlgbmpFile.GetPathName(); /Cstring *UpdateData(FALSE);elseMessageBox(_T("没有选择要写入的文件");return ;CFile fp;f

26、p.Open(dstfilename,CFile:modeWrite|CFile:modeCreate);CArchive load(&fp,CArchive:store);load<<src; / 写入 CString 串到文件, src,src2 为已有 CString 对象数据。 load<<src2;/ 追加写入 Cstring 数据到文件(写入第二个 CString 串) UpdateData(FALSE);load.Close();fp.Close();CString 数据写入到文件示例二: / 以追加方式写入。UpdateData(TRUE);CS

27、tring dstfilename;CFileDialog DlgbmpFile(FALSE,_T( "dk" ),NULL,OFN_OVERWRITEPROMPT,"_Te(xt File(*.dk)|*.dk|all file(*.*)|*.*|" ),NULL);if (IDOK = DlgbmpFile.DoModal()dstfilename = DlgbmpFile.GetPathName(); /Cstring * UpdateData(FALSE);else MessageBox(_T( " 没有选择要写入的文件 ")

28、; return ;CFile fp; fp.Open(dstfilename,CFile:modeWrite);fp.SeekToEnd();/使fp指向文件结尾处,再进行串行化,即可实现追加存储。CArchive load(&fp,CArchive:store);CString srcEncode,srchelp;srcEncode = _T( "" );for ( int i=0;i<src.GetLength();i+) srchelp.Format(_T( "%d"),src.GetAt(i); srcEncode = srcEn

29、code + srchelp;load<<srcEncode;load<<src2;UpdateData(FALSE);load.Close();fp.Close();1.14 、读取数据文件到 Cstring 对象 读取文件全部内容UpdateData(TRUE);CString srcfilename;CFileDialog DlgyuvFile(TRUE,_T( "dk" ),NULL,OFN_HIDEREADONLY,_T"T(ext File(*.dk)|*.dk|all file(*.*)|*.*|"),NULL);i

30、f (IDOK = DlgyuvFile.DoModal() srcfilename=DlgyuvFile.GetPathName(); /Cstring * UpdateData(FALSE);elseMessageBox(_T( " 没有选择要读取的文件 "); return ;CFile fp1; fp1.Open(srcfilename,CFile:modeRead);CArchive loadArchive(&fp1,CArchive:load|CArchive:bNoFlushOnDelete); CString dst1,dst2,dstt;dst.E

31、mpty();int i=fp1.GetPosition();int j=fp1.GetLength();while(1)if(i>=j)break;loadArchive>>dst1;i = i+ (dst1.GetLength()<<1)+4; /32bit为 CString 的标志。 -4ByteloadArchive>>dst2;i = i+ (dst2.GetLength()<<1)+4; dstt.Format(_T("Edit1:rn%srnEdit2:rn%srn"),dst1,dst2); dst =

32、dst + dstt;UpdateData(FALSE); loadArchive.Close();fp1.Close();1.15 、 绘图说明: 消息映射: COMMAND提示:将菜单项和工具栏项等的ID设为同一个ID即可在处理消息时执行 同样代码功能 / 画圆CDC *pDC=GetDC()使用GetDC()函数申请CD类的指针/CRect rect(100,0,300,200);CBrush brush(RGB(180,180,255);/ 定义并申请一块矩形区域/ 定义画刷/pDC->FillRect(rect,&brush);/ 填充绘图区域/pDC->Elli

33、pse(rect);pDC->Ellipse(160,10,260,110);/ 画园 ( 外圈 )CRgn rgn;rgn.CreateEllipticRgn(161,11,260,110);pDC->FillRgn(&rgn,&brush);/ 填充颜色pDC->TextOut(120,120," 绘制直径为 100个像素的圆 "); / 圆下方添加文字ReleaseDC(pDC); / 释放CD类的指针/ 画矩形CDC *pDC=GetDC()使用GetDC()函数申请CD类的指针CRect rect(100,0,300,200);/

34、定义并申请一块矩形区域CBrush brush(RGB(180,180,180); / 定义画刷/ pDC->FillRect(rect,&brush);/填充绘图区域pDC->Rectangle(160,10,260,110); / 画矩形pDC->TextOut(120,120," 边长为100个像素的正方形 "); / 添加文字ReleaseDC(pDC); / 释放CD类的指针1.16、使按钮/菜单项失效和生效使用语句: GetDlgItem(IDC_BUTTON2)->EnableWindow(false);/ 使其失效 GetDl

35、gItem(IDC_BUTTON1)->EnableWindow(true);/ 使其生效 菜单项:CMenu *m_CMenu;m_CMenu=GetMenu();m_CMenu->EnableMenuItem(ID_ADDUSER,MF_BYCOMMAND|MF_GRAYED); m_CMenu->EnableMenuItem(ID_MODPASD,MF_BYCOMMAND|MF_GRAYED);m_CMenu->EnableMenuItem(ID_ADDUSER,MF_BYCOMMAND|MF_ENABLED);m_CMenu->EnableMenuItem

36、(ID_MODPASD,MF_BYCOMMAND|MF_ENABLED);/ 获取控件窗口指针1.17、在EDIT控件中追加输出文本CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT4); pEdit->SetSel(0,-1); / 选中全部文本 int nStart,nEnd;pEdit->GetSel(nStart,nEnd); / pEdit->SetSel(nEnd,nEnd); pEdit->ReplaceSel(str);获取当前选中文本的开始与结束位置/ 将插入符定位到最后一个字符结束处/ 替换文本(即输出文本)1.18

37、、判断MessageBo按下的按钮 MessageBox(“”, ”,MB_OKCANCEL);会返回一个 int 类型的值,这个值对应着不同的按钮。具体对应如下OK button.Cancel button.Abort button.Retry button.Ignore button. Yes button.No button./* IDOK 1 The user chose theIDCANCEL 2 The user chose the IDABORT 3 The user chose the IDRETRY 4 The user chose the IDIGNORE 5 The us

38、er chose the IDYES 6 The user chose theIDNO 7 The user chose the*/1.19、char * 和 CString 相互转换char * 到 CString 使用 Format函数;CString 到 Char*:char * pstr= (LPSTR)(LPCTSTR)cstr; 或者用语句: pstr = cstr.GetBuffer(cstr.GetLength() 注意:上述CString到Char * 的转换方法只使用与 ANS编码的,对Unicode编码的转换会失效。1.20 、隐藏文件CFileStatus status

39、;if (CFile:GetStatus(srcfilename,status) /如果成功获取文件属性BYTE m_s=status.m_attribute;CString m_string; status.m_attribute |= CFile:hidden; CFile:SetStatus(srcfilename,status);MessageBox(_T("文件:rn" )+srcfilename+_T( "rn 已经隐藏");显示隐藏文件使用 &= CFile:hidden;1.21 、实现真彩色的按钮使用MFC基础控件:一、插入图片

40、到资源:如ID为(IDB_BMP ,在这里可以插入256色、16位色或更高色的图 片。二、为按钮添加一个变量,类型为:CBitmapButton (需要手动改)三、在初始化程序中加入如下代码:(CBitmapButton *)GetDlgItem( 按钮的 ID)->LoadBitmaps( 按钮可用时显示图片 的 ID,按钮可用时按下按钮的 ID, 按钮不可用时显示图片的 ID, 按钮不可用时按下按钮的 ID);(CBitmapButton *)GetDlgItem(按钮的 ID)->Invalidate(true);(CBitmapButton *)GetDlgItem(按钮的

41、 ID)->SizeToContent();四、设置按钮的属性 ->Styles->Owner draw 为开.使用 Activex 控件 :一、在窗本上单击鼠标右键选择Insert Activex Control二、在 Activex Control 列表中选中 MicroSoft Forms 2.0 Image 控件三、单击确定,在所插入的控件中单击鼠标右键来修改其属性(样式,图片,鼠标样式等)四、可以和 Button 控件一样为其添加消息函数,而且消息更加丰富。1.22 、非模态对话框的创建与销毁创建:如在对话框A中某条消息处理中需要创建并显示非模态对话框B,则可在该消

42、息映射函数中写入:CADlg:Function()pDialogB = new CResult(); / 在函数体外部声明指针: CBDlg* pDialogB;pDialogB ->Create(IDD_B, this); / 显示对话框 IDD_E为对话框 B 的 IDpDialogB ->ShowWindow(SW_SHOW);销毁:在对话框B的处理函数中加入销毁方式(在对话框退出时销毁自己)。首先需要添加WM_DESTRO息映射,其处理函数函数体如下:void CBDlg:OnDestroy()CDialog:OnDestroy();delete this ;/ TODO:

43、 Add your message handler code here然后需要重载对话框B的CBDIg类的On0K(),和OnCancel()函数void CBDlg:OnOK()CDialog:OnOK();DestroyWindow();void CBDlg:OnCancel()CDialog:OnCancel();DestroyWindow();附:模态对话框创建与显示 ( 不需要添加销毁机制 ):CBDlg dlgg; / 创建对话框类实例 dlgg.DoModal();/ 显示对话框1.23 移动和复制文件移动一个文件,一般可使用:BOOL WINAPI MoveFile(LPCST

44、R Existing, LPCSTR Target);其中 Existing 是现有文件或目录, Target 是目标文件或目录。此函数还可以用来对文件改名。例: MoveFile("D:Tempa.txt", "E:MyPathb.txt");将 D:Tempa.txt 移动到 E:MyPath 并改名为 b.txtAPI 中的 CopyFile:BOOL WINAPI CopyFile(LPCSTR oldFileName, LPCSTR newFileName, BOOL failIfExists); oldFileName: 原始文件名; new

45、FileName: 目标文件名;failIfExists: 目标文件已存在时的处理办法。 TRUE 则不覆盖并返回失败标记, FALSE 则覆盖。 oldFileName 和 newFileName 可以使用通配符来批量复制文件。其中 XcopyFile 可以复制包括子文件夹的内容。或者调用DOS的外部命令XCOPYWinExec("xcopy 参数1 参数2",SW_HIDE);隐藏命令行窗口,其中参数为指定文件夹路径和名称 返回值: TRUE 代表成功, FALSE 代表失败。粘贴粘贴的功能不是一个函数能够实现的对剪贴板的操作 Windows 有一系列函数粘贴必须要用的

46、是 OpenClipboard(), GetCipboardData() 和 CloseClipboard().拷贝粘贴的对象为文本或其他二进数据(如图像)时可能还要辅助其他的 API.附录 AC-1 标准输出输入函数 <stdio.h>FILE* fopen(const char* file name, const char* mode):使用 mode模式开启参数filename 的档案,传回档案串流,失败传回 NULL。FILE* freopen(const char* filename, const char* mode, FILE* stream):关闭档案后重新开启档案。int fflush(FILE* stream):清除缓冲区的内容,成功传回 0,失败传回 EOF。int fclose(FILE* stream):关闭档案。int remove(const char* filename) :删除参数的档案,失败传回非零值。int rename(const char

温馨提示

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

评论

0/150

提交评论