




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
菜单,菜单是重要的用户界面对象,用户通常从菜单栏中选择命令来使用应用程序。 Windows98支持三种类型的菜单: (1)菜单栏(主菜单):菜单栏横放在窗口的顶部 (2)弹出式子菜单:弹出式菜单是从主菜单下弹出的菜单 (3)上下文菜单:通过鼠标右键弹出的自由浮动菜单,1.菜单的机制与功能,菜单可以用多种方法创建,一般存在在资源脚本中,在程序运行时才调入,就像其他资源一样。 1.1菜单消息 菜单被选中时发送消息给Windows,再由Windows传送给应用程序的消息映像。 Win32API提供4个菜单消息,但在MFC消息映像中,只有两个菜单消息WM_COMMAND和ON_UPDATE_COMMAND_UI。MFC自动处理其他两个消息。,(1)处理WM_COMMAND消息 用户选中了菜单项会产生WM_COMMAND消息 MFC的框架窗口类要确保每一个菜单项都有WM_COMMAND消息的处理函数,对缺少处理函数的菜单项,MFC使其变灰。 消息映射ON_COMMAND项采用以下形式: ON_COMMAND(MenuID,ClassMethod) MenuID是菜单项的标识符,ClassMethod是处理菜单项WM_COMMAND消息定义的方法(命令处理函数)。,(2)处理UPDATE_COMMAND_UI消息 在许多情况下菜单项可能有多个状态。例如某一个时刻可用(正常),而某一个时刻不可用(菜单变灰);菜单项可以加注标记,以表明被选中或未被选中。 UPDATE_COMMAND_UI是MFC所特有的,如果想根据应用程序的当前状态激活或者使菜单项无效,或者在程序运行的某一刻反映菜单项的可用性,就要由自己处理这条消息。此消息和Win32 API的WM_INITPOPUPMENU消息相对应。 ON_UPDATE_COMMAND_UI项采用以下形式: ON_UPDATE_COMMAND_UI(MenuID,ClassMethod) MenuID是菜单项的标识符,ClassMethod是处理菜单UPDATE_COMMAND_UI消息定义的方法(更新处理函数),该消息值适合弹出式菜单项的菜单项,而对于顶层菜单项则不适用。例如不能使用该消息来禁止“文件”菜单项。 如果菜单项有更新处理函数,那么它被调用进行更新;如果没有,那么框架检查命令处理函数是否存在,若不存在,则使菜单变灰。 必须提供一个菜单处理函数或更新函数。,1.2 基于菜单栏的程序设计1 Menuitem程序为一个单文档的应用程序,程序启动后,单击“graph”菜单中的“rectangle”,则在当前的客户区中显示一个矩形;单击“graph”菜单中的“Ellipse”,则在当前的客户区中显示一个椭圆。 (1)利用AppWizard,生成一个MFC的单文档工程“Menuitem”。 (2)单击“Workspace”窗口的“ResourceView”标签,找到“Menu”项,双击“ID_MAINFRAME”,对菜单资源进行编辑。 用右键单击菜单项最右边的虚线框,在弹出式菜单中选择“Propertis”命令,在“Menu Item Properties”窗体中在“Caption”一栏中输入“graph”,用同样方法,设计其下的两个菜单项: 第一个子菜单项,“ID”为“ID_GRAPH_REC”,“Caption”为“Rectangle”。 第二个子菜单项,“ID”为“ID_GRAPH_ELLIPSE”,“Caption”为“Ellipse”。 (3)在“CMenuitemView”类中加入一些数据成员: public: bool m_rectangle; bool m_ellipse; COLORREF m_crbk;,(4)编辑“MenuitemView.cpp”文件中的构造函数,初始化数据成员,加入下面代码: CMenuitemView:CMenuitemView() m_rectangle =TRUE; m_ellipse =FALSE; m_crbk=RGB(255,0,0); (5)利用ClassWizard为视图类加入命令消息控制函数及更新命令UI消息控制函数。,(6)编辑“MenuitemView.cpp”文件里的菜单命令控制函数。 OnGraphRec函数用m_crbk颜色来填充客户区矩形,并设置布尔型变量m_rectangle 、 m_ellipse的值。,Void CMenuitemView:OnGraphRec () CClientDC dc(this); CPen newpen, *oldpen; newpen.CreatePen(PS_SOLID,2,RGB(255,255,0); oldpen=dc.SelectObject( ,对应的更新命令UI控制函数OnUpdateGraphRec根据变量m_rectangle的值来控制菜单的有效性状态,决定菜单项“rectangle ”什么时候有效。 void CMenuitemView:OnUpdateGraphRec(CCmdUI*pCmdUI) pCmdUI-Enable(m_rectangle); ,OnGraphEllipse函数用m_crbk颜色来填充客户区,并设置布尔型变量m_ellipse 、 m_rectangle的值。 Void CMenuitemView:OnGraphEllipse () CClientDC dc(this); CPen newpen, *oldpen; newpen.CreatePen(PS_SOLID,2,RGB(255,255,0); oldpen=dc.SelectObject(,m_rectangle = TRUE; m_ellipse =FALSE; dc.SelectObject(pOldBrush); dc.SelectObject(oldpen); delete pNewBrush; ,对应的更新命令UI控制函数OnUpdateGraphEllipse ,根据变量m_ellipse的值来控制菜单的有效性状态,决定菜单项“ellipse”什么时候有效 void CMenuitemView:OnUpdateGraphEllipse (CCmdUI*pCmdUI) pCmdUI-Enable(m_ellipse); ,1.3菜单消息的处理路径,MFC中拥有菜单的框架窗口不必处理每一个菜单项的消息;相反,菜单消息可由拥有这个菜单命令资源的其他对象来处理。例如,CCmdTarget派生类对象(如窗口和视窗)以及应用对象(由CWinApp派生),对于支持文档/视窗架构的应用程序,文档对象和视窗对象也能处理菜单消息。 尽管任何由CCmdTarget派生的类对象都能接受菜单消息,但并不是所有这类对象都可以同时接收到菜单消息,菜单消息是按照一定的路径传送的,下表列出了当MFC发送命令消息给非文档/视窗结构的应用,单文档应用以及多文档应用时,查找消息映射表的次序。,查找消息映射表的次序,应用程序收到一个菜单命令时,它按照一定的顺序传递该命令,该顺序依次为:视窗类、文档类、主框架类和应用类。首先是视窗类获得处理该命令的机会,然后是文档类,再接着是主框架类,最后是应用类。如果某个类没有相应的菜单命令,则该命令返回给上一个类处理,直到返回到应用类。如果其中有一个类处理了该命令,则直接返回系统,其他类就没有机会再处理了。,1.4 弹出式菜单,浮动的弹出式菜单是一种新的用户界面设计风格。用户按下鼠标右键,然后就会弹出一个浮动菜单。 用资源编辑器和MFC库的CMenu:TrackPopupMenu函数可以创建弹出式菜单,该函数的原型: BOOL TrackPopupMenu(UNIT nFlags,int x,int y, CWnd*pWnd, LPCRECT lpRct=NULL); 其中参数nFlags为弹出式菜单的标志,例如若其值为TPM_RIGHTALIGN,表示创建的弹出式浮动菜单,其右边界位于X处;若其值为TPM_LEFTALIGN,表示其左边界位于X处,参数X与Y表示屏幕坐标。,(1)浮动菜单的创建,创建菜单对象需要两步。第一步,分配一个C+对象;第二部,初始化该对象。下面为创建并初始化一个CMenu类对象的典型代码: /为浮动菜单申请一个对象空间 CMenu pContexMenu; /初始化 CMenu对象 pContexMenu.LoadMenu(IDR_MENU1);,(2)浮动菜单的显示,浮动菜单创建和初始化后,在用户单击了鼠标右键时显示。下面的WM_RBUTTONDOWN消息处理函数就可以显示出上面例子中的浮动菜单。 void MyMainFrame:OnRButtonDown(UNIT nFlags,CPoint point) /首先将客户区坐标转换成屏幕坐标 ClientToScreen( ,1.5弹出式菜单设计,按照如下步骤创建弹出式菜单。 (1)选择“Insert/Resource”菜单命令,将弹出“Insert Resource”窗体,选中“Menu”选项,然后单击“New”,将产生一个空的“ID_MENU1”菜单。 (2)双击选择“IDR_MAINFRAME”菜单,然后右键单击“graph”菜单项,在弹出式菜单中选择“Copy”命令。 (3)双击选择“ID_MENU1”菜单,右键单击第一个空的菜单,在弹出菜单中选择“Paste”命令,将产生一个菜单项。,(4)用ClassWizard在视图类中加入WM_RBUTTONDOWN消息控制函数,然后加入程序代码如下: void CTest1View:OnRButtonDown (UINT nFlags, CPoint point) CMenu menu; menu.LoadMenu(IDR_MENU1); ClientToScreen( (5)编译运行程序,在运行的窗口中,右键单击,即可显示出弹出式菜单,并执行相应的命令。,2. CMenu类,2.1CMenu类简介 MFC是靠CMenu来管理菜单的。CMenu对象可以代表每个Windows菜单,其中包括顶级菜单项以及与之相关联的弹出式菜单。 当窗口的Create或LoadFrame函数被调用的时候,菜单的资源是直接附加到框架窗口的,CWnd成员函数GetMenu返回一个临时CMenu指针。利用该指针,可以自由地访问和更新菜单对象。 ID_MAINFRAME是标识资源脚本中的初始菜单。如果想在应用程序启动之后想要第二个菜单,可以使用菜单编辑器创建一个具有自己的资源ID的菜单资源。然后在程序中构造一个CMenu对象,使用CWnd:LoadMenu函数从这个资源中加载菜单,调用CWnd:SetMenu函数将新菜单附加到框架窗口。然后调用Detach成员函数来分离该对象的HMENU句柄,这样当CMenu对象超出范围的时候,菜单就不会被破坏了。,菜单对象实际上是由一个子菜单的嵌套结构组成的。可以使用GetSubMenu成员函数来获得指向包含在主CMenu对象的弹出式菜单的指针。 CMenu:GetMenuString函数返回对应于基于0的索引或命令ID的菜单项字符串。如果使用的是命令ID选项,那么菜单连同任何子菜单一起被搜索。,2.2动态改变菜单,有时需要在运行时为响应程序状态的改变而频繁地动态增加或删除菜单项。在运行时为响应出现的状态而改变的菜单项称为动态菜单。动态菜单的好处是它给用户提供了一套适合于程序当前状态的选项列表。,(1)获得菜单的指针 增加或删除一个菜单时,需要菜单的指针。为获得菜单的指针,应使用GetMenu()函数。 CMenu* CWnd:GetMenu()const 如果CWnd对象没有菜单,则返回值为NULL。如果CWnd对象是一个子窗口,则返回值是无意义的。该函数返回的指针是临时性的,不要把它保存下来长期使用。 给出窗口的主菜单的指针后,就可以使用GetSubMenu()函数来简单地获得包含在主菜单内的弹出式子菜单的指针。该函数的原型如下:,CMenu*GetSubMenu(int nPos)const; 该函数用于获得一个弹出式菜单的CMenu对象的指针。 若指定位置有一个弹出式菜单,则返回一个指向CMenu对象的指针,该对象的m_hMenu成员包含弹出菜单的指针;否则返回NULL。若CMenu对象不存在,则生成一个模板,CMenu指针将被保留。在获得菜单的指针后,就可以为菜单添加或删除菜单项了。,(2)给菜单中增加菜单项 为了在运行时给菜单增加菜单项,应当使用InsertMenu()函数,该函数的原型如下: BOOL InsertMenu(UINT nPosition,UNIT nFlags,UNIT nIDNewItem=0,LPCTSTR lpszNewItem=NULL); BOOL InsertMenu(UNIT nPosition,NUIT nFlags,UNIT nIDNewItem,const CBitmap*pBmp); 该函数用于向一个菜单中nPosition指定的位置处插入一个菜单,并把其他项向后移。其应用程序可以用对nFlags赋值的办法设置此菜单项的状态。 nIDNewItem指定插入菜单项的ID值。LpszNewItem指定菜单项的显示文本 只要当窗口中的菜单发生了变化(无论窗口是否显示)时,就要调用CWnd:DrawMenuBar()函数。 第二种形式的InsertMenu()函数的pBmp指定图形菜单项所用的位图。,(3)删除菜单项 为了删除菜单项,应当使用DeleteMenu()函数,该函数原型如下所示: BOOL DeleteMenu(UNIT nPosition,UNIT nFlags); 若菜单项有一隶属弹出式菜单时,DeleteMenu将破坏该弹出式菜单,释放由此弹出菜单所占用的内存。,(4)获得菜单的菜单项数 在动态处理菜单时,需要频繁地知道一个菜单中有多少菜单项。为了获得菜单项的数目,应当使用如下的GetmenuItemCont()函数。 CMenu:GetMenuItemCount UINT GetMenuItemCount()const 该函数确定顶层或弹出式菜单项的项数。,(5)使菜单项有效或无效 有时候,一些菜单项只适用于某些状态,而不适用于其他的状态。在这种情况下,需要使之暂时无效,之后再使其有效,为此可使用EnableMenuItem()函数。 CMenu:EnableMenuItem UNIT EnableMenuItem(UNIT nIDEnableItem,UNIT nEnable); 该函数可以设置菜单项,使菜单项可用、禁止或变灰。nIDEnableItem确定要改动的菜单项。该函数调用成功时,返回先前的状态(MF_DISSABLED、MF_ENABLE或MF_GRAYED),调用失败时返回-1。,2.3动态菜单设计,菜单既可以从资源模板中加载,也可以在程序中通过动态方式进行创建,本节将通过在graph菜单项下动态增加三个子菜单项,来改变显示区的背景颜色,具体方法如下: (1)选择菜单项“ViewResource SymbolsNew”,在“Name”文本编辑框中输入“ID_COLOR1”,系统自动子在“Value”框中加入一个值,单击“OK”,关闭“New Symbol”。用同样方法,加入“ID_COLOR2,ID_COLOR3”的定义。 (2)在视图类中加入OnInitialUpdate函数,加入程序代码如下:,CMenu*pColorMenu=NULL; CMenu*pTopMenu=AfxGetMainWnd()- GetMenu(); int iPos; iPos=pTopMenu-GetMenuItemCount()-1; pColorMenu=pTopMenu- GetSubMenu(iPos); pColorMenu-AppendMenu(MF_STRING, ID_COLOR1,“White”); pColorMenu-AppendMenu(MF_STRING, ID_COLOR2,“Purple”); pColorMenu-AppendMenu(MF_STRING, ID_COLOR3,“Blue”); 该程序代码首先获得指向框架窗口菜单的指针,然后获得指向graph菜单的指针,然后通过AppendMenu()函数来增加3个菜单项。,(3)用ClassWizard在视图中加入“OnCmdMsg”,然后加入程序代码如下: BOOL CTest1View:OnCmdMsg(UINT nID,int nCode, void*pExtra, AFX_CMDHANDLERINFO*pHandlerInfo) if (pHandlerInfo=NULL) if(nID=ID_COLOR1) if(nCode=CN_COMMAND) DoSelectColor(0); else if(nCode=CN_UPDATE_COMMAND_UI) DoUpdateSelectColor(0,(CCmdUI*)pExtra); return TRUE; ,else if(nID=ID_COLOR2) if(nCode=CN_COMMAND) DoSelectColor(1); else if(nCode=CN_UPDATE_COMMAND_UI) DoUpdateSelectColor(1,(CCmdUI*)pExtra); return TRUE; else if(nID=ID_COLOR3) if(nCode=CN_COMMAND) DoSelectColor(2); else if(nCode=CN_UPDATE_COMMAND_UI) DoUpdateSelectColor(2,(CCmdUI*)pExtra); return TRUE; return CView:OnCmdMsg(nID,nCod,pExtra,pHandlerInfo); ,该函数用于传递3个菜单命令的WM_COMMAND和UPDATE_COMMAND_UI消息到函数DoSelectColor(i),DoUpdateSelectColor(i,(CCmdUI*)pExtra)。 (6)右键点 “CmenuitemView”类,在弹出的窗口里选择“Add Menmber Function”菜单项,在“Add Menmber Function”窗口的“Function Type”框中输入“void”,在“Function Declaration”框中输入“DoSelectColor(int iColor)”,其余接受缺省设置。用同样方式设置DoUpdateSelectColor(int iColor,CCmdUI*pCmdUI)函数。设置完成后,加入下面代码。,Void CMenuitemView: DoSelectColor(int iColor) ASSERT(iColor=0 函数设置成员变量m_crbk的值,并调用相应函数显示。,Void CMenuitemView: DoUpdateSelectColor(int iColor,CCmdUI*pCmdUI) ASSERT(iColor=0 该函数更新相应菜单项设置。 (7)编译运行该应用程序,然后分别测试3个颜色菜单项是否满足要求。,工具栏,工具栏是一系列工具按钮的组合,借助它们可以提高用户的工作效率。 VC6.0系统保存了每个工具栏相应的位图,其中包括所有按钮的图像,它们具有相同的尺寸(高15像素,宽16像素),它们在位图中的排列次序与屏幕上按钮在工具栏上的次序相同。,1 使用工具栏编辑器,选择菜单“文件”“打开工作区”,将前面的单文档应用程序调入。在项目工作区窗口中选择ResourceView页面,双击“Toolbar”项中的IDR_MAINFRAME则工具栏编辑器出现在主界面的右边。,空按钮,图形工具箱,颜色工具箱,1 使用工具栏编辑器,1.1 创建一个新的工具栏按钮 在新建的工具栏中,最右端总有一个空按钮,双击该按钮弹出其属性对话框,在ID框中输入其标识符名称,其右端又出现一个新的空按钮。单击按钮,在资源编辑器的工具按钮设计窗口可以进行工具按钮的位图绘制。,1.2 移动一个按钮 在工具栏中移动一个按钮,用鼠标左键点中它并拖动至相应位置即可。如果用户拖动它离开工具栏位置,则此按钮从工具栏中消失。若在移动一个按钮的同时,按下Ctrl键,则在新位置复制一个按钮,新位置可以是同一个工具栏中的其他位置,也可在不同的工具栏中。,1 使用工具栏编辑器,1.3 删除一个按钮 将选取中的按钮拖离工具栏,则该按钮就消失了。但若选中按钮后,单击Delete键并不能删除一个按钮,只是将按钮中的图形全部以背景色填充。,1 使用工具栏编辑器,1.4. 在工具栏中插入空格 在工具栏中插入空格有以下几种情况:,如果按扭前没有任何空格,拖动该按钮向右移动并当覆盖相邻按钮的一半以上时,释放鼠标键,则此按钮前出现空格。 如果按钮前有空格而按钮后没有空格,拖动该按钮向左移动并当按钮的左边界接触到前面按钮时,释放鼠标键,则此按钮后将出现空格。 如果按钮前后均有空格,拖动该按钮向右移动并当接触到相邻按钮时,则此按钮前的空格保留,按钮后的空格消失。相反,拖动该按钮向左移动并当接触到前一个相邻按钮时,则此按钮前面的空格消失,后面的空格保留。,1 使用工具栏编辑器,1.5. 工具栏按钮属性的设置 双击某按钮弹出其属性对话框,如图所示。,2 工具按钮和菜单项相结合,工具按钮和菜单项相结合是指当选择工具按钮或菜单命令时,操作结果是一样的。 结合的方法:在工具按钮的属性对话框中将按钮的ID号设置为相关联的菜单项ID。 例:在前面程序基础上,通过两个工具按钮分别显示主菜单IDR_MAINFRAME和菜单IDR_MENU1。,(1) 打开前面的单文档应用程序。 (2) 利用工具栏编辑器设计两个工具按钮。,2 工具按钮和菜单项相结合,(3) 双击刚才设计的第一个工具按钮,弹出该工具按钮的属性对话框,将该工具按钮的ID号设为ID_TEST_RETURN,在提示框内键入“返回应用程序主菜单n返回主菜单”。 (4) 双击刚才设计的第二个工具按钮,弹出该工具按钮的属性对话框,将该工具按钮的ID号设为ID_VEW_TEST,在提示框内键入“显示测试菜单n显示测试菜单”。,2 工具按钮和菜单项相结合,(5) 编译运行并测试。程序运行后,将鼠标移至刚才设计的第一个工具按钮处,这时在状态栏上显示出“返回应用程序主菜单”信息,若稍等片刻会弹出提示小窗口,显示出“返回主菜单”字样,单击新添加的这两个按钮,会执行相应的菜单命令。,3 多个工具栏的使用,在用MFC AppWizard创建的文档应用程序中往往只有一个工具栏,但在实际应用中,常常需要多个工具栏。 例:在前面程序基础上,当显示主菜单IDR_MAINFRAME时,只显示MFC AppWizard创建的工具栏,当显示菜单IDR_MENU1时,则只显示新添加的工具栏。,(1) 在项目工作区的ResourceView页面中,展开Toolbar(工具栏)资源,用鼠标单击IDR_MAINFRAME不松开,按下Ctrl键,移动鼠标将IDR_MAINFRAME拖到Toolbar资源名称上,复制了工具栏默认资源IDR_MAINFRAME,复制后的资源标识系统自动设为IDR_MAINFRAME1。,3 多个工具栏的使用,(2) 右击工具栏资源IDR_MAINFRAME1,从弹出的快捷菜单中选择Properties命令,如图所示,将ID设为IDR_TOOLBAR1。,(3) 双击IDR_TOOLBAR1,打开工具栏资源,按图删除不要的工具按钮。,3 多个工具栏的使用,(4) 在CMainFrame类中添加一个成员变量m_wndTestBar,变量类型为CToolBar。CToolBar类封装了工具栏的操作。,(5) 在CMainFrame:OnCreate函数中添加工具栏创建代码: int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct) if (CFrameWnd:OnCreate(lpCreateStruct) = -1) return -1;,3 多个工具栏的使用,int nRes = m_wndTestBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE |CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS |CBRS_FLYBY|CBRS_SIZE_DYNAMIC,CRect(0,0,0,0), AFX_IDW_TOOLBAR + 10); if (!nRes |!m_wndTestBar.LoadToolBar(IDR_TOOLBAR1) TRACE0(“Failed to create toolbarn“); return -1; / fail to create ,3 多个工具栏的使用,m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); m_wndTestBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar( EnableDocking是CWnd类成员函数,用来让工具栏或其他控制条在窗口进行停靠操作,参数CBRS_ALIGN_ANY表示可以停靠在窗口的任一边。 DockControlBar是CFrameWnd类的成员函数,用来将指定的工具栏或其他控制条进行停靠。,3 多个工具栏的使用,CreateEx是CToolBar类的成员函数,用来创建一个工具栏对象。 第1个参数用来指定工具栏所在的父窗口指针,this表示当前的CMainFrame类窗口指针。 第2个参数用来指定工具按钮的风格,当为TBSTYLE_FLAT时表示工具按钮是“平面的”。 第3个参数用来指定工具栏的风格,由于这里的工具栏是CMainFrame的子窗口,因此需要指定WS_CHILD | WS_VISIBLE ; CBRS_TOP表示工具栏放置在父窗口的顶部; CBRS_GRIPPER表示工具栏前面有一个“把手” ; CBRS_TOOLTIPS 表示允许有工具提示;CBRS_ FLYBY表示在状态栏显示工具提示文本; CBRS_SIZE_DYNAMIC 表示工具栏在浮动时,其大小是可以动态改变的。,3 多个工具栏的使用,第4个参数是用来指定工具栏四周的边框大小,一般都为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金融行业数字化转型背景下数据治理与隐私安全策略研究
- 直播电商新生态2025年主播与品牌合作模式探索报告
- 体育休闲广场建设成本控制与效益分析报告:2025年数据解读
- 数字孪生视角下的城市规划:2025年城市历史文化街区保护规划应用研究
- 农村电商物流配送体系智能化升级方案建议报告
- 2025年交通运输与物流业物流金融风险管理研究报告
- 手术室护士年度工作总结集锦6篇
- 江苏小区充电管理制度
- 服装企业账款管理制度
- 乡镇环保所培训管理制度
- 郑州大学cad期末考试试题及答案
- 学院就业工作管理制度
- 吉林省吉林市名校2025年七下英语期末考试模拟试题含答案
- 2025年智能科技与数字经济对社会交通出行方式与效率的影响报告
- 2025年机器人技术与应用开发考试试题及答案
- 2025届福建省厦门市名校数学七下期末质量检测试题含解析
- DB62T 3081-2022 绿色建筑工程验收标准
- 河北大学《民法学》2023-2024学年第二学期期末试卷
- 2025年全球视域下的中国文化试题及答案
- 食品供应商协议合同模板
- 扬州市仪征市2024-2025学年三下数学期末质量检测试题含解析
评论
0/150
提交评论