第7章资源在sdk编程中的应用_第1页
第7章资源在sdk编程中的应用_第2页
第7章资源在sdk编程中的应用_第3页
第7章资源在sdk编程中的应用_第4页
第7章资源在sdk编程中的应用_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

第7章

资源在Windows编程中的应用加速键对话框位图资源光标菜单工具条字符串

17.1菜单和加速键资源及其应用

菜单由以下组成部分:(1)

窗口主菜单条(2)

下拉式菜单框(3)

菜单项热键标识(4)

菜单项加速键标识(5)

菜单项分隔线27.1.1菜单的创建过程

(1)定义菜单

菜单在资源描述文件中的定义形式为:menuIDMENU[,载入特性选项]{菜单项列表}字符串,或1~65535之间的整数

选项 说明DISCARDABLE当不再需要菜单时可丢弃FIXED 将菜单保存在内存中的固定位置LOADONCALL 需要时加载菜单MOVEABLE 菜单在内存中可移动PRELOAD 立即加载菜单POPUP语句

MENUITEM语句

3POPUP语句定义弹出式菜单,其形式为:POPUP"菜单项名"[,选项];

在菜单项名中加入符号“&”,以定义热键定义弹出式菜单项“编辑”的形式如下:POPUP“编辑(&E)”;

选项 说明MENUBARBREAK 菜单项纵向分隔标志CHECKED 显示选中标志INACTIVE 禁止一个菜单项GRAYED 禁止并变灰显示4MENUITEM用于定义菜单项,其形式为:MENUITEM"菜单项名"菜单项标识(ID)[,选项]ID为菜单项标识,在WM_COMMAND消息中字参数wParam中包含选中菜单项的标识。每个菜单项的标识必须唯一,标识值常在头文件中定义。如:创建菜单中的水平分隔符:MENUITEMSEPARATOR5该菜单在资源描述文件中的定义如下:#include<windows.h>#include"Menu.h"∥菜单定义My_menu

MENU

MOVEABLE

{POPUP"文件(&F)"

{ MENUITEM "新建(&N)", IDM_NEW MENUITEM "打开(&O)", IDM_OPEN MENUITEM "关闭(&C)", IDM_CLOSE MENUITEM "保存(&S)", IDM_SAVE MENUITEM "另存为(&A)", IDM_SAVEAS MENUITEM SEPARATOR MENUITEM “退出(&X)”, IDM_EXIT}}6menu.h文件中定义了菜单项标识所对应的数值:……#defineIDM_NEW 10#defineIDM_OPEN 11#defineIDM_CLOSE 12#defineIDM_SAVE 13#defineIDM_SAVEAS 14#defineIDM_EXIT 15…7(2)加载菜单资源

在窗口类中加载菜单

在创建窗口时加载菜单

动态加载菜单

WNDCLASSwndclass;…wndclass.lpszMenuName=lpszMenuName;HWNDhwnd;HMENUhmenu; …hmenu=LoadMenu(hlnstance,"My_menu");hwnd=CreateWindow(…,hmenu,…);

hmenu2=LoadMenu(hlnstance,"Menu2");SetMenu(hwnd,hmenu2);…87.1.2操作菜单项

1.禁止或激活菜单项

BOOLEnableMenuItem(HMENUhmenu,UlNTwIDEnableItem,UINTdwEnable)92.设置或取消选中标志

DWORDCheckMenuItem(HMENUhmenu, UINTwIDCheckItem, //菜单项标识UINTdwCheck //操作标识)

103.增加菜单项

在菜单的尾部增加菜单项

BOOLAppendMenu(HMENUhmenu,UINTdwFlags, UINTdwIDNewItem, LPCTSTRlpNewItem )

例如在“文件”菜单的末尾增加一项“关于”:AppendMenu(hmenu,MF_ENABLED,IDM_ABOUT,“关于(&A)“);

11(2)在菜单中插入菜单项

调用函数InsertMenu在菜单中插入新的菜单BOOLInsertMenu(HMENUhmenu, //菜单句柄UINTwPosition, //指定新菜单项插入位置UINTdwFlag, //新加入的菜单项的信息UINTdwIDNweItem, //新加入的菜单项的标识LPCTSTRlpNewItem //新插入的菜单项的内容)

124.删除菜单项调用函数DeleteMenu删除菜单项:

BOOLDeleteMenu(HMENUhmenu, UINTwPosition,//要删除的菜单项的位置UINTdwFlag //对wPosition的解释)

135.修改菜单项

调用函数ModifyMenu修改菜单中的某个项;BOOLModifyMenu(HMENUhmenu,UINTwPosition, //指定需修改的菜单项位置UINTdwFlag,UINTdwIDNweItem, //修改后菜单项的标识LPCTSTRlpNewItem //修改后的菜单项名)147.1.3动态地创建菜单

动态地创建菜单可以使系统资源更加节省,在应用程序中动态创建菜单分两个步骤:1.调用函数CreateMenu创建空的弹出式菜单HMENUCreateMenu(void)2.调用函数AppendMenu或InsertMenu在该菜单中加入菜单项。157.1.4加速键资源

加速键资源是常伴随菜单使用的一种非常有用的资源

(1)在资源描述文件中定义加速键资源

加速键名ACCELERATORS加速键标识(ID),[类型][NOINVERT] //使用加速键时,菜单项不高亮显示

[ALT][SHIFT][CONTROL]

//组合键的组合方式

16常用的加速键有两种形式:①“^char”,id

例如:“文件”菜单中“保存”项的加速键可定义为:“^S”,IDM_SAVE②nCode,idVIRTKEY使用虚拟键作为加速键。

例如将F1键定义为“帮助”菜单项的加速键,其ID标识为IDM_HELP,其形式如下:VK_F1,IDM_HELP,VIRTKEY172.加载加速键资源

调用函数LoadAccelerators加载加速键资源:…HACCELhAccel;…hAccel=LoadAccelerators(hInstance, //当前程序实例句柄lpAcceIName //lpAccelName为加速键表名);183.翻译加速键翻译操作经常在应用程序的消息循环中进行:while(GetMessage(&Msg,NULL,0,0)) {if(!TranslateAccelerator(hwnd,hAccel,&Mag)){ TranslateMessage(&Msg); DispatchMessage(&Msg); } }函数TranslateAccelerator是翻译操作的核心。其特点是将翻译后的消息直接发往窗口,不在消息队列中等待。197.1.5创建菜单资源实例

【例7-1】创建一个窗口菜单的构架,单击“创建统计计算菜单项”动态地创建“统计计算”菜单,之后,“创建统计计算菜单项”变成不可操作,而原先不可操作的“删除统计计算菜单项”变成可操作,执行“删除统计计算菜单项”菜单命令删除“统计计算”菜单。20#include"windows.h"#include"7_1.h"HMENUhmenu,haddmenu;//定义菜单句柄LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);intWINAPIWinMain(……){……

ShowWindow(hwnd,nCmdShow);UpdateWindow(hwnd);hAccel=LoadAccelerators(hInstance,lpszMenuName);while(GetMessage(&Msg,NULL,0,0)){ //在消息循环中截获加速键消息 if(!TranslateAccelerator(hwnd,hAccel,&Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); }}returnMsg.wParam;}21LRESULTCALLBACKWndProc(……){switch(message)

{caseWM_COMMAND:switch(LOWORD(wParam))

{

caseIDM_ADDMENU: //在主菜单中添加弹出式菜单hmenu=GetMenu(hwnd); //获取主菜单句柄haddmenu=CreateMenu(); //动态创建菜单//在创建的菜单中增加菜单项AppendMenu(haddmenu,MF_ENABLED,IDM_qiuhe,"求和");AppendMenu(haddmenu,MF_ENABLED,IDM_fangcha,“方差”);AppendMenu(haddmenu,MF_ENABLED,IDM_pinjunzhi,"平均值");AppendMenu(haddmenu,MF_ENABLED,IDM_junfanggen,"均方根");//将创建的弹出式菜单插入主菜单中

InsertMenu(hmenu,2,MF_POPUP|MF_BYPOSITION, (UINT)haddmenu,"统计计算(&C)");//相应改变菜单中有关绘图统计计算菜单项的属性EnableMenuItem(hmenu,IDM_ADDMENU,MF_GRAYED);EnableMenuItem(hmenu,IDM_DELMENU,MF_ENABLED);DrawMenuBar(hwnd); //重新显示窗口菜单break;22caseIDM_DELMENU:

DeleteMenu(hmenu,2,MF_BYPOSITION); //删除统计计算菜单项//相应改变“文件”菜单中有关统计计算菜单项的属性EnableMenuItem(hmenu,IDM_ADDMENU,MF_ENABLED);EnableMenuItem(hmenu,IDM_DELMENU,MF_GRAYED);DrawMenuBar(hwnd); //重新显示窗口菜单break;caseIDM_EXIT:SendMessage(hwnd,WM_DESTROY,0,0);break;}break; caseWM_DESTROY:

PostQuitMessage(0);break;default:returnDefWindowProc(hwnd,message,wParam,lParam);}return0;}23本例程的头文件如下:#defineIDM_ADDMENU 15#defineIDM_DELMENU 16#defineIDM_EXIT17#defineIDM_HELP22#defineIDM_qiuhe23#defineIDM_fangcha24#defineIDM_pinjunzhi25#defineIDM_junfanggen2624本例程用到的资源文件源代码如下:#include"c:\prog_book\7_1\7_1.h"#include"windows.h"MENUMENUDISCARDABLEBEGINPOPUP"文件(&F)"

BEGIN

MENUITEM"创建统计计算菜单项(&P)\tCtrl+P",IDM_ADDMENUMENUITEM"删除统计计算菜单项(&D)\tCtrl+D",IDM_DELMENU,GRAYEDMENUITEMSEPARATORMENUITEM"退出(&X)",IDM_EXITENDMENUITEM"帮助(&H)",IDM_HELPENDMENUACCELERATORSMOVEABLEPURE

BEGIN"^P",IDM_ADDMENU, ASCII"^D",IDM_DELMENU, ASCIIEND257.2位图资源及其应用

267.2.1位图概念

位图是一种数字化的图形表示形式,位图中的每个像素点由位图文件中的一位或多位数据表示。整个位图的信息被细化为每个像素点的属性值277.2.2位图的操作过程

位图操作过程:定义位图句柄:HBITMAPhBm;

加载或创建

hBm=LoadBitmap(hInstance,lpszName)hBm=CreateCompatibleBitmap(hdc,nWidth,nHeight)

选入内存设备环境SelectObject(hdcmem,hBm);输出

BOOLBitBlt(HDChdcDest, //目的设备环境句柄intXDest,intYDest,intnWidth,intnHeitght,//位图基点及高宽HDChdcSrc,intnXSrc,intnYsrc,//源设备环境句柄及位图基点DWORDdwRop //标识位图显示方式)28在输出位图之前,经常需调用函数GetObject获取位图的尺寸:

GetObject(hBitmap, //为位图句柄sizeof(BITMAP), //BITMAP结构的大小(LPVOID)&bm //BITMAP结构的地址)应用程序调用函数GetObject后,将指定位图的信息写入BITMAP结构中(结构见教材)297.2.3位图操作实例

【例7-2】本例调用一幅坦克的图片,并在用户窗口区上显示LRESULTCALLBACKWndProc(……){PAINTSTRUCTps;switch(message){caseWM_CREATE: hdc=GetDC(hwnd); //获取设备环境句柄hdcmem=CreateCompatibleDC(hdc);//内存设备环境句柄 ReleaseDC(hwnd,hdc); //释放设备环境句柄

caseWM_PAINT: hdc=BeginPaint(hwnd,&ps); SelectObject(hdcmem,hBm);//将位图选入内存设备环境30//将内存设备环境中的位图拷贝到设备环境中BitBlt(hdc,180,80,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);

EndPaint(hwnd,&ps); //释放设备环境句柄break;caseWM_DESTROY:DeleteObject(hBm); //释放位图PostQuitMessage(0);break;default: returnDefWindowProc(hwnd,message,wParam,lParam);}return0;}本例的资源文件如下: pic7BITMAPpic7_2.bmp //定义位图资源

317.3对话框资源及其应用

对话框是一个弹出式窗口,它一般用于用户输入或与用户进行交互活动的场合对话框模式非模式允许用户在该对话框与应用程序其他窗口之间的切换,非模式对话框从WinMain函数的消息循环中接收输入不允许用户在关闭对话框之前切换到应用程序的其他窗口327.3.1模式对话框的编程方法

1.定义对话框资源

一般的形式为:

对话框名DIALOG[载入特性选项]X,Y,Width,Height[设置选项]{对话框的控件定义}

样式选项决定了对话框的外型特点,样式见表7-6

CHECKBOX、ICON、COMBOBOXLISTBOX、DEFPUSHBUTTON、PUSHBUTTON、RADIOBUTTON、GROUPBOX、EDIT、SCROLLBAR静态文本控件332.调用函数DialogBox显示对话框调用DialogBox函数在窗口中显示对话框:

intDialogBox(HINSTANCEhInstance,LPCTSTRlpszDialogName, //对话框资源的名称HWNDhwndParent, //拥有该对话框的窗口句柄DLGPROClpDialogFunc//对话框处理函数的地址)

343.构造对话框消息处理函数

对话框消息处理函数的一般形式为:BOOLCALLBACKDlgProc(HWNDhDlg,…,…,…){switch(message){caseWM_INITDIALOG: return1;caseWM_COMMAND switch(LOWORD(wParam)){case … …break;… }break;}return0;}35在对话框消息处理函数中主要常处理以下两类消息:(a)WM_INITDIALOG消息对话框在响应消息WM_INITDIALOG消息时完成其初始化操作,在功能上与主窗口函数的WM_COMMAND消息相似。(b)WM_COMMAND消息对话框在响应消息WM_COMMAND时,通过查看消息字参数(wParam)中的低位字节,与控件标识(ID)相比较,以确定产生交互请求的控件并据此转入相应的处理过程进行处理。364.关闭对话框调用函数EndDialog可以关闭对话框:BOOLEndDialog(HWNDhdlg,INT_PTRnResult)

Windows消息框是模态对话框的一种特殊形式,应用程序可通过调用函数MessageBox生成一些简单但又常用的消息框:intMessageBox(HWNDhwnd, //拥有消息框的窗口LPCTSTRlpszText, //消息框中显示的字符串LPCTSTRlpszCaption, //作为标题的字符串DWORDdwType //指定消息框的内容)377.3.2模态对话框应用实例

38LRESULTCALLBACKWndProc(…,…,…,…){switch(message){caseWM_COMMAND:

switch(LOWORD(wParam)){caseIDM_OPEN: MessageBox(hwnd,"文件已经打开!","文件打开",MB_OK); break; caseIDM_SAVE: MessageBox(hwnd,"文件保存成功!","文件保存",MB_OK); break; caseIDM_EXIT: SendMessage(hwnd,WM_DESTROY,0,0);break; caseIDM_ABOUT: //创建对话框 DialogBox(hInst,"About",hwnd,(DLGPROC)DlgProc);break; }break;

caseWM_DESTROY:PostQuitMessage(0);break;

default:returnDefWindowProc(hwnd,message,wParam,lParam);}return0;}39BOOLCALLBACKDlgProc(HWNDhdlg,…,…,…){switch(message){caseWM_INITDIALOG: //初始化对话框 return1;

caseWM_COMMAND: //处理对话框消息 switch(LOWORD(wParam)) {caseIDOK: //关闭对话框 EndDialog(hdlg,0);return1; } break;

caseWM_CLOSE: EndDialog(hdlg,0); return1;}return0;}40本例的资源程序代码如下:#include<windows.h>#include"7_3.h"MenuMENUDISCARDABLE{POPUP"文件(&F)"{MENUITEM"打开(&O)\tCtrl+O", IDM_OPENMENUITEMSEPARATORMENUITEM"保存(&S)\tCtrl+S", IDM_SAVEMENUITEMSEPARATORMENUITEM"退出(&X)", IDM_EXIT}

POPUP"帮助(&H)"{MENUITEM"关于(&A)...", IDM_ABOUT}}41MenuACCELERATORS{"^O",IDM_OPEN"^S",IDM_SAVE}

AboutDIALOG10,10,100,50STYLEWS_POPUP|WS_CAPTION|WS_SYSMENUCAPTION"关于"FONT18,"楷体"//对话框中的文本字体类型及大小{CTEXT"Windows模态对话框",-1,13,10,80,10DEFPUSHBUTTON"确定",IDOK,35,30,30,12}427.3.3非模态对话框的编程方法

非模态对话框在对话框的定义、对话框的创建及消息处理上与模态对话框略有差别,方法如下:1.定义对话框样式非模态对话框的定义一般形式如下:

STYLEWS_POPUP|WS_CAPTION|WS_VISIBLE样式中应包含WS_VISIBLE,否则无法在屏幕上显示2.创建对话框函数非模态对话框的创建由函数CreateDialog完成:HWNDCreateDialog(HINSTANCEhInstance, LPCTSTRlpszDialogName, HWNDhwndParent, DLGPROClpDialogFunc ) 433.消息循环部分的处理由于非模态对话框并不禁止应用程序向其他窗口发送消息,因此,在WinMain函数的消息循环中必须包含截获发往非模态对话框的消息,并将其发往相应的对话框处理函数进行处理。其消息循环过程的一般形式为:while(GetMessage(&Msg,NULL,0,0)){if(!IsDialogMessage(hdlg,&Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); }}

447.3.4非模态对话框应用实例

【例7-4】在“关于”窗口不关闭的前提下,仍可以对“文件”下拉菜单进行操作,如选“文件”菜单中的“创建”选项,即可弹出“创建”窗口45LRESULTCALLBACKWndProc(…,…,…,…){switch(message)

{caseWM_COMMAND:

switch(LOWORD(wParam)) {caseIDM_NEW:MessageBox(hwnd,"文件创建成功!","文件创建",MB_OK);break;

caseIDM_OPEN: MessageBox(hwnd,"文件打开成功!","文件打开",MB_OK); break;

caseIDM_SAVE: MessageBox(hwnd,"文件保存成功!","文件保存",MB_OK); break; caseIDM_EXIT: SendMessage(hwnd,WM_DESTROY,0,0); break;

caseIDM_ABOUT: hdlg=CreateDialog(hInst,"About",hwnd,(DLGPROC)DlgProc); break; } ……46BOOLCALLBACKDlgProc(HWNDhdlg,…,…,…){switch(message){caseWM_INITDIALOG: //初始化消息框 return1; caseWM_COMMAND: //处理消息框消息 switch(LOWORD(wParam)) {caseIDOK: DestroyWindow(hdlg); //关闭消息框 return1; }break; caseWM_CLOSE: DestroyWindow(hdlg);return1; }return0;}本例题的资源文件与上例类似,请见教材477.4图标资源的应用

图标是代表应用程序的特殊的最小位图。在图标上双击鼠标就可以执行该应用程序,图标资源可以由VC自带的图标资源编辑器来创建487.4.1图标资源的操作

图标资源的操作包括创建、定义和加载等过程1.图标资源的创建

用户可通过图形编辑器自定义图标形式,并保存在扩展名为.ico的文件中。Windows系统也提供了标准图标。标识 形状IDI_APPLICATION 缺省图标IDI_ASTERISK 信息图标IDI_EXCLAMATION 惊叹号图标IDI_HAND 停止图标IDI_QUESTION 问号图标492.在资源文件中定义图标资源若采用自定义图标,要在资源文件中定义该图标:

图标名ICON图标文件名(.ico)

3.在应用程序中加载图标调用函数LoadIcon进行图标资源的加载的,此过程经常是在定义窗口类时进行,其形式为:WNDCLASSwndclass;…………wndclass.hicon=LoadIcon(hThisInst,lpszIconName);…………图标名507.4.2图标资源应用举例

【例7-5】

程序所使用的图标文件名为tree.ico,在为本例程序指定了这个图标后,在资源管理器中就可以看到在可执行文件的文件名

51本例程序中使用的图标资源文件如下:TREEICONd:\prog_book\7_5\tree.ico在初始化窗口类时加载图标资源BOOLInitWindowsClass(HINSTANCEhInstance){ WNDCLASSWndClass; …… WndClass.hIcon=LoadIcon(NULL,"TREE"); //加载图标资源 …… returnRegisterClass(&WndClass);}

52TtWS1rIySgKVxtsfJupeRS+il$WZSmlyJB*Js+eUCfGwDMG5%ZNd7hqgJo7Q-HtbHDS+2LJQQsBZcj$Y#Skelp9t(C**lVelL!7Cv0y63H(p1c2ZYgh73l5I9!3$J)S-tV(IEGw&UVStD&oDb2VLZIcRDXVOScesykF9P87v%jmW)iUSu+PVx(zaYVWK5#VKcn7#ZltuE3nvBoMl)y%uUf(ghi-n1WzXG*+l6F+F&o*xOt88m*frWf48c-cBVf03YE0(b62ssih(9BFuOME#zBR%MjGZbmYAt9su0T6Rzq7s*VtBF7V$YkLQfuIvI9Sg4wWHak&yebw&d5yXPtXexJ*OX#aFaVd3AMoS#P*(E-##kuOmc-0rsUP*rx28#2ZlZyO&DFsQ1i*fv-&HOeVel%6FR6jeEjXFj)gdrN+Ar*F3Xhzjd8fM1rfSVY0D4duNa&IRr-EoI1L2dgKdCpbZ0kkA2)Pw1AuETWQrAIfrr9m92c-VK3jjzqo4*)D!jnwrib2f!(tPORIotam%oWd*xPcA)(YlSR24L&YoO&!C)nS(ufTT%p8VDE4%K*wYlV0-qHgXrYZILwQ&i#s5qsnHzC1xrLDNTR!1NM0&K(u%lxV2P5hvEDKad0sl3jwCtWxEOZ%NxfiOE5vlDPrOITNLq#Q0#TUN4LcOfhWhQBJD)iEi0KAQMZnCtL6m#gMtXYFTdzGPdpktbQBou870H2C#e+lwPB#eN8QJYlbctIg72(CRo&ZSggBTW26wq(Al8lQxjDlLJpUNHuvIBCvvvf03*QGmL3alQMaALtARFTA2EnDwgj(2mBy&Kt+cQtvbtvwNqQ+r9wGSd7Rmrhy#cdLr8KQbOrlV6t-1T0b*7vNYrM(taHdLU9oE1A!oL%E4H1NI$8Rvk307+Fx$Z0mzhnvWTc#HQ)pZZ3Q5G$iUv+tz&YMPC&C)WP+RePxZ56!wRgP)TS$Ivu%KwShMk93IcmFhGjj0VAUy4RMpl3RwK462hm9b(eAHFG0a%zpP0J34NX6PwE(cTp7(aPv$vhe*Abd7rCAGXq+TS7TkG1IJ*IS+jqAkHr+&yB7M-lZAs!giKhQ0ON#Rh64A*FYpnSMT$84jcaypMnvC%ps7rtKcXZe$ni8NA3-poPeQE%zubxoF%GMLIoGaMd5F$j&szIE6--$zCV46L$&6HQLKEWo%mlLbELg1Xt(z*zt%f$lftMR3)RGP2Hd*+P9toOgNs!+clKY2cyb!z$HjK+y08Ufm2TBN+tQKqftP1Y54tjfivq2NsLbb-)DHfwhsPCZhIyGZnCYP7Ya5ch7nGXD(U$9Ws&rr%tVbZX%HSNfg7wf-1!)EfJB(54Tq4aMZT*8TV6h9JbWZnP%YP$AO*jDjirRZdT3AiL-w(g0CXtI26!d)qk(MEMU3dk$g$prNeXTl$F0)g!N!Lk)&6!OoD8WtNtpk+gUv*6Jp2wpCSWw3$Y7$x1KtAOT1$FljPBss6tEK61m8aYPV*u-9gpzd((Qn6Ol3d9kYTSHclrG*uYT1V*+pD0qQ*SH9caxyAMJNubF36MTg3FFJyf(9dephL4jyrlc8L2*7-AG4#vM&295+SdDhq-#SdT524(s!hbpHe#U7S$!IrSawHU6n#lg2VRrr*$cz$l-ifuu59q!*AU06kZFfCn63gY9mHizBF$NeKih#nZM19h)i!Ji*fjpM-z4z(A$pq89nx2e8&6bwGADUAf(ec2ZS3xV-LBk5wvI0EbATDYdOI*y0lR&z7*+eEXkfob&+gx3%UCiBj3Kme0PQqbs8+taGZcvBRn)&JzZyuV0LAm36DyUWY6hAazMLqbwU)Gqt3koteVui(lruALXkWlo0B7z5%RrF8Sk-qDRe9Sn3a#t2*6&UvMi)EL(17vgRoU#bA$#NSINcbc6WT(ggKQPFtz37HaPcQTmSbnDTKexzZ8fII8XLpxYu!%coDi%5wJpQWc+W6ulZV!Tp5sGJ5-8YjM0K)q)oHn*GwYeyfntaLNM!mfyOMtn9iSMVGTxJkSHbE2MojeCiL*os5*Uqy!oJDYlNTob0KZt5JZBrhKB5EdhJdMH%((lNufv0ow*5LBnzd-#UfmLwh0n1LEFx43n&E7BhNqiEG$Rbz*K2zN7j#H-AHU)ifRD3oyj6Ev1U-sRQI!$V1833ABWdnedF7Et7kBEknFfIffyXuFmI1aTUX3NDvgPLIuw*59lX&YU-M5u&XpQc%dfg1q4#DHXY!kB3YsnGeTxPSUJvMMwFM!+Jg*T8Ilp%v3NyoZE8ivkPgzds#M6AL5s#sh$mPDgJ+EVEyTJ6UZKI8ImPefVjNyOJ#qN7oXaDGZDMa)tyA#lyik7gTBwkURDsx0gqZe)$Trz#lCqE$94vwXvzg#KN)w$vRUSC+WOWglGGzIITVlp#JVls#FH%tlVIK48SLRTn6KE&yaiwuidrPKeZYXWqlm00*YUY5k&s5NTk-K1PatR5F(+Kj%P5S2rkDt-+mg&y720UGd7I0BrV1gQS5xOEVeCF7HVd+xViu5(Wv%v$A-s+)OACG2EOL+w+e67!TYtZUON6GsZ-GfOsbUxgK*6*7vCJdN#WsdG-e7h!dMkb+%elFkP7)oqvnhzU!ZzkWT9LqjRBiNJkY(!fPj7uyzNe(YJ83fqmVHAkNA-+l5G2US7HyrW+k!4*oHRlvOff+K+UBjC-CIaJ&aZl6$Z8XL8+P&Lf%Jl+JzRnvL&WJ$l%9TdvyStLS$omWLC0QD9U)QL+2QJpssEU*jza(LqypfkPDylTMU#N2Ns*7Lqy8ke6cSGApJNB5-unAX&I0eUWs5BhcyG8!2+Nw(MP7vU!Le-Qn-2Sn#p9nqusY0QtcaQZgV)IqCGEvjADLnSemHZqZHl&UIIg%!9%Pm(uTg0p1!AMaO79FdR1VLFNeqr(BCTyx$vteW&YKtWiVghYaHQodwL#7+AXgzQfizJ1L+o!EyM6!Bq#epIFeQNAm)bBFjgP)nCqLmGqVN!hv*Bzv)dU8BuknUILIipM07STOSjjwHz!DkYA-lOtWWX#AWw9xjl6TB2-r7RlPBH-1c07!*Y!DBiwzHtaYkHdz3n3&s7iTO+jlO*2hW0y1pmSe!BUi&F3O+z2t#hiZjU6$+98OUMJ$NhTBOCcn9qTcoxyvDumq9uhK88jqMIR1Dvb6k6tuop(tW1aYQdPh50J

温馨提示

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

评论

0/150

提交评论