已閱讀5頁,還剩81頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
本資料由-校園大學(xué)生創(chuàng)業(yè)網(wǎng)-提供/Visual C+ 開發(fā)環(huán)境為控件提供的自繪制功能使程序員能夠充分發(fā)揮自己的創(chuàng)造性來設(shè)計比較漂亮的程序界面。所謂AVI按鈕是指每當(dāng)鼠標(biāo)從按鈕上經(jīng)過時就播放一段按鈕提示的AVI,在許多的游戲程序以及三維動畫軟件中(如摩托英豪、Cool 3D等)都廣泛的采用了這種AVI按鈕。它使得程序的用戶界面很具有動感,也使得我們的程序至少看上去更專業(yè),本實例借助Visual C+強大的控件自繪制功能來實現(xiàn)這種AVI按鈕的原理及實現(xiàn)。 一、實現(xiàn)方法為了實現(xiàn)能夠播放AVI視頻流的動畫按鈕,還是需要利用控件的重載功能,這部分內(nèi)容本書已經(jīng)在實例:實現(xiàn)XP風(fēng)格的按鈕中介紹了,這里就不再贅述了,讀者可以參考該實例查閱相關(guān)內(nèi)容。本實例主要探討如何使用MFC的CanimateCtrl動畫類播放AVI格式的視頻流,視頻流可以來自一個AVI文件,也可以來自資源。在程序中合理地使用動畫控件,可以使程序的界面更加形象生動。MFC的CAnimateCtrl類封裝了動畫控件,該類的Create()成員函數(shù)負(fù)責(zé)創(chuàng)建動畫控件,其聲明為:BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 函數(shù)中的參數(shù)dwStyle是如表一所示的控件風(fēng)格的組合,參數(shù)rect指定了控件的尺寸,pParentWnd指向父窗口,nID是控件的ID。若創(chuàng)建成功則函數(shù)返回TRUE。風(fēng)格 含義 ACS_CENTER 使動畫片居于控件中央,并使動畫片打開后控件窗口的尺寸和位置保持不變。如果不指定該風(fēng)格,則控件的尺寸會自動調(diào)整來適應(yīng)動畫片的大小。ACS_TRANSPARENT 使動畫片的背景透明(不輸出動畫片的背景色)。 ACS_AUTOPLAY 一旦打開動畫片后就一直重復(fù)播放。 表一、動畫控件的風(fēng)格除表中的風(fēng)格外,一般還要為動畫控件指定WS_CHILD、WS_VISIBLE和WS_BORDER窗口風(fēng)格。例如,要創(chuàng)建一個能自動播放的動畫控件,應(yīng)該指定其風(fēng)格為WS_CHILD|WS_VISIBLE|WS_BORDER|ACS_AUTOPLAY。CAnimateCtrl類主要的成員函數(shù)包括:BOOL Open( LPCTSTR lpszFileName )、BOOL Open( UINT nID ) 、BOOL Play( UINT nFrom, UINT nTo, UINT nRep ) 、BOOL Seek( UINT nTo )、BOOL Stop( )、BOOL Close( )等。上述的Open()函數(shù)從AVI文件或資源中打開視頻流,如果參數(shù)lpszFileName或nID為NULL,則系統(tǒng)將關(guān)閉以前打開的視頻流。Play()函數(shù)用來播放選定的視頻流,參數(shù)nFrom指定了播放的開始幀的索引,索引值必須小于65536,若為0則從頭開始播放。nTo指定了結(jié)束幀的索引,它的值必須小于65536,若為-1則表示播放到視頻流的末尾。nRep是播放的重復(fù)次數(shù),若為-1則無限重復(fù)播放。Seek()函數(shù)用來靜態(tài)地顯示視頻流的某一幀。參數(shù)nTo是幀的索引,其值必須小于65536,若為0則顯示第一幀,若為-1則顯示最后一幀,若成功則函數(shù)返回TRUE。Stop()函數(shù)用來停止動畫片的播放。Close()函數(shù)用來關(guān)閉并從內(nèi)存中清除視頻流。上述所有函數(shù)都是調(diào)用成功返回TRUE,否則返回FALSE。讀者朋友們在學(xué)習(xí)的過程中要注意,動畫控件并不能播放所有的AVI文件,只有滿足下列條件的AVI文件才能被播放:1)AVI文件必須是無聲的,不能有聲道;2)AVI文件必須是未壓縮的,或是用RLE算法壓縮的;3)AVI的調(diào)色板必須保持不變。另外,動畫控件最大的一個局限性在于它只能顯示系統(tǒng)調(diào)色板中缺省的顏色,因此如果用動畫控件來播放一個256色的AVI文件,那么播放效果看起來就象一個16色的動畫一樣,很不理想??傊?,動畫控件只能播放一些簡單的,顏色數(shù)較少的AVI動畫。如果要較滿意地播放256色的AVI文件,就要利用MCI接口,這部分內(nèi)容請讀者朋友參閱有關(guān)資料。二、編程步驟1、啟動Visual C+6.0,生成一個基于對話框的應(yīng)用程序,取其項目名為 TestAviButton, 然后按下 Finish 按鈕來完成工程的創(chuàng)建; 2、使用Class Wizard菜單命令以CButton 為基類創(chuàng)建CAviButton 類,生成類的頭文件 AviButton.h 和實現(xiàn)文件 AviButton.cpp,同時在類中重載 Create()、DrawItem()函數(shù)和 WM_MOUSEMOVE的消息映射;3、打開工程中ID值為IDD_TESTAVIBUTTON_DIALOG 的對話框進(jìn)行編輯,該對話框的提示文本為將鼠標(biāo)移至按鈕上:刪除取消按鈕,將確定按鈕的屬性 Styles 改為 OwnerDraw ,并去掉其提示文本 確定;另外執(zhí)行 Insert | Resource 命令,在彈出的對話框中按下 Custom 按鈕,然后輸入AVI,向程序中添加AVI格式的資源,然后選擇AVI類型的文件向項目中添加AVI格式的資源IDR_AVI;4、添加代碼,編譯運行程序,此時每當(dāng)我們的鼠標(biāo)經(jīng)過按鈕時,一個漂亮的AVI按鈕就產(chǎn)生了。三、實現(xiàn)代碼/ AviButton.h : header file#if !defined(AFX_AVIBUTTON_H_5E20D4EF_864E_11D7_886E_F16C81CD642B_INCLUDED_)#define AFX_AVIBUTTON_H_5E20D4EF_864E_11D7_886E_F16C81CD642B_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000class CAviButton : public CButton/ Constructionpublic:CAviButton();public:UINT m_nAviID; CAnimateCtrl AnimateCtrl; BOOL bPlaying; void LoadAvi(UINT nAviID); void DrawButton(CDC* pDC, UINT nState, CRect rect); / Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAviButton)public:virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);/AFX_VIRTUAL/ Implementationpublic:virtual CAviButton();/ Generated message map functionsprotected:/AFX_MSG(CAviButton)afx_msg void OnMouseMove(UINT nFlags, CPoint point);/AFX_MSGDECLARE_MESSAGE_MAP();#endif /CAviButton.CPP文件;#include stdafx.h#include TestAviButton.h#include AviButton.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifCAviButton:CAviButton()m_nAviID = 0; bPlaying = FALSE; CAviButton:CAviButton()void CAviButton:LoadAvi(UINT nAviID) m_nAviID =nAviID; BEGIN_MESSAGE_MAP(CAviButton, CButton)/AFX_MSG_MAP(CAviButton)ON_WM_MOUSEMOVE()/AFX_MSG_MAPEND_MESSAGE_MAP()/ CAviButton message handlersvoid CAviButton:DrawButton(CDC *pDC, UINT nState, CRect rect) COLORREF upCol,downCol,edgeCol; edgeCol=RGB(0,0,0); /設(shè)置按鈕邊緣的初始化顏色;if (nState & ODS_SELECTED) = ODS_SELECTED) /設(shè)置按鈕被按下時按鈕的顏色 upCol=RGB(0,0,0); edgeCol=RGB(128,128,128); downCol=RGB(0,0,0); else /設(shè)置按鈕正常時按鈕的顏色 upCol=RGB(255,255,255); downCol=RGB(128,128,128); CPen* pOldPen = NULL; BOOL pen1Created; CPen pen1; BOOL pen2Created; CPen pen2; if (pen1Created = pen1.CreatePen(PS_SOLID, 1, upCol) pOldPen = pDC-SelectObject( &pen1 ); /畫左上邊緣 pDC-MoveTo(1,rect.Height()-1); pDC-LineTo(1,1); pDC-LineTo(rect.Width()-1,1); pDC-MoveTo(0,rect.Height()-1); pDC-LineTo(0,0); pDC-LineTo(rect.Width()-1,0); if (pen2Created = pen2.CreatePen(PS_SOLID, 1, downCol) pDC-SelectObject( &pen2 ); if (pen1Created) pen1.DeleteObject(); pen1Created = FALSE; /畫右下邊緣 pDC-MoveTo(rect.Width()-1,0); pDC-LineTo(rect.Width()-1,rect.Height()-1); pDC-LineTo(0,rect.Height()-1); pDC-MoveTo(rect.Width()-2,1); pDC-LineTo(rect.Width()-2,rect.Height()-2); pDC-LineTo(0,rect.Height()-2); if (pen2Created)/刪除pen2畫筆對象 pen2.DeleteObject(); pen2Created = FALSE; if (pen1Created = pen1.CreatePen(PS_SOLID, 1, edgeCol) pOldPen = pDC-SelectObject( &pen1 ); if (pen1Created) pen1.DeleteObject(); pen1Created = FALSE; if (pOldPen != NULL) pDC-SelectObject( pOldPen ); void CAviButton:DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) / TODO: Add your code to draw the specified itemCRect rect; GetClientRect(rect); if (!:IsWindow(AnimateCtrl) /在按鈕上生成一個動畫控件 AnimateCtrl.Create(WS_CHILD |WS_VISIBLE,rect,this,0); /打開avi文件并顯示第一幀 AnimateCtrl.Open(m_nAviID); AnimateCtrl.GetClientRect(rect); CDC* pDC = CDC:FromHandle(lpDrawItemStruct-hDC); UINT nState = lpDrawItemStruct-itemState; CRect buttonRect; GetClientRect(buttonRect); /繪制按鈕 DrawButton(pDC, nState, buttonRect); BOOL CAviButton:Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) / TODO: Add your specialized code here and/or call the base classreturn CWnd:Create(lpszClassName, lpszWindowName, dwStyle,rect, pParentWnd, nID, pContext);void CAviButton:OnMouseMove(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultClientToScreen(&point); CRect rcWindow; GetWindowRect(rcWindow); /判斷鼠標(biāo)是否經(jīng)過按鈕 BOOL bNewMouseOverButton = rcWindow.PtInRect(point); if (bNewMouseOverButton & IsWindowEnabled() ) if (:IsWindow(AnimateCtrl) & !bPlaying) AnimateCtrl.Play(0,-1,1); bPlaying = TRUE; SetCapture(); else bPlaying = FALSE; ReleaseCapture(); CButton:OnMouseMove(nFlags, point); /BOOL CTestAviButtonDlg:OnInitDialog()CDialog:OnInitDialog();/此處代碼省略;m_AviButton.LoadAvi(IDR_AVI);return TRUE; / return TRUE unless you set the focus to a control 四、小結(jié)通過CAnimateCtrl類和按鈕控件的自畫功能的結(jié)合,本實例實現(xiàn)了動畫按鈕,如果該類和工具條、狀態(tài)條等控件結(jié)合,還可以實現(xiàn)在上述控件上播放動畫視頻流的效果。用Visual C+設(shè)計屏幕抓圖程序(加入日期:2006-9-9)【收藏文章】【對此文發(fā)表評論】【保存文章至硬盤】【打印文章】【字體:大 中 小】-在Windows操作系統(tǒng)中,當(dāng)用戶按下PrintScreen按鈕后,Windows自動將當(dāng)前屏幕的圖像拷貝到系統(tǒng)剪貼板中,這時可以通過畫筆這個小程序?qū)⒓糍N板中的內(nèi)容保存成圖像文件,可以看出,如果需要將當(dāng)前屏幕保存下來還是比較麻煩的,能否可以自己編寫一個應(yīng)用程序,自動將當(dāng)前屏幕的內(nèi)容保存到一個圖像文件中去呢?這個答案是肯定的,本實例應(yīng)用程序就是利用通用的熱鍵管理DLL庫實現(xiàn)的熱鍵功能,在收到熱鍵通知后截取屏幕的內(nèi)容并保存到bmp文件中。例如我們設(shè)置圖片保存路徑為c:,熱鍵為F9 + Control,然后按Change按鈕設(shè)置好熱鍵,那么當(dāng)我們按下CTRL+F9后,當(dāng)前界面將以BMP圖像文件的格式被保存在C:目錄下。一、實現(xiàn)方法熱鍵管理DLL實際上是一個鍵盤鉤子,由它來監(jiān)視系統(tǒng)的鍵盤事件。如果有和程序登記符合的按鍵組合就通知該程序的窗口。為了應(yīng)用方便,本實例把它做成了一個標(biāo)準(zhǔn)的管理庫來為其它的程序通過熱鍵服務(wù),它有兩個輸出函數(shù):AddHotkey()和DeleteHotkey(),程序只需要調(diào)用這兩個函數(shù)就可以了,如果編譯之后不用改變熱鍵,則只需要AddHotkey就可以了。DLL中的所有的全局變量都放在一個共享段中,定義如下:#pragma data_seg(shareddata)HHOOK hHook =NULL; /鉤子句柄UINT nHookCount =0; /掛接的程序數(shù)目static UCHAR HotKeyMAX_KEY = 0; /熱鍵虛擬鍵碼static UCHAR HotKeyMaskMAX_KEY = 0; /組合掩碼, control=4,alt=2,shift=1static HWND hCallWndMAX_KEY = 0; /window handle associated with hotkeystatic int KeyCount =0;static UCHAR MaskBits =0; /00000 Ctrl=4 & Alt=2 & Shift=1#pragma data_seg() 關(guān)于共享段,有幾點重要的說明:一是必須在鏈接選項里指定該段為共享:一種方法是在project-settings-link-object/library中加上/section:shareddata,rws;第二種方法是在def文件的sections里加上一句shareddata read write shared;第三種指定共享段的方法在程序里加上一句#pragma comment(linker,section:shareddata,rws)。二是所有的變量必須初始化,否則鏈接程序會把它放到普通數(shù)據(jù)段。三是如果不初始化變量,需要在段外用_declspec(allocate(shareddata) 變量類型 變量名的方式定義。DLL中的兩個輸出函數(shù)分別用來添加/刪除熱鍵,函數(shù)代碼如下:BOOL _declspec(dllexport) _stdcall AddHotkey(HWND hWnd,UCHAR cKey,UCHAR cMask) BOOL bAdded=FALSE;for(int index=0;indexMAX_KEY;index+)if(hCallWndindex=0)hCallWndindex=hWnd;HotKeyindex=cKey;HotKeyMaskindex=cMask;bAdded=TRUE;KeyCount+;break;return bAdded;/刪除熱鍵BOOL _declspec(dllexport) _stdcall DeleteHotkey(HWND hWnd,UCHAR cKey,UCHAR cMask) BOOL bRemoved=FALSE;for(int index=0;indexMAX_KEY;index+)if(hCallWndindex=hWnd)if(HotKeyindex=cKey&HotKeyMaskindex=cMask)hCallWndindex=NULL;HotKeyindex=0;HotKeyMaskindex=0;bRemoved=TRUE;KeyCount-;break;return bRemoved; DLL中的鉤子函數(shù)如下:LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam) BOOL bProcessed=FALSE;if(HC_ACTION=nCode)if(lParam&0xc0000000)=0xc0000000)/ 有鍵松開switch(wParam)case VK_MENU:MaskBits&=ALTBIT;break;case VK_CONTROL:MaskBits&=CTRLBIT;break;case VK_SHIFT:MaskBits&=SHIFTBIT;break;default: /judge the key and send messagebreak;for(int index=0;indexMAX_KEY;index+)if(hCallWndindex=NULL)continue; if(IsWindow(hCallWndindex)&(HotKeyindex=wParam)&(HotKeyMaskindex=MaskBits)SendMessage(hCallWndindex,WM_HOTKEY,wParam,WM_KEYUP);bProcessed=TRUE;else if(lParam&0xc000ffff)=1) /有鍵按下switch(wParam)case VK_MENU:MaskBits|=ALTBIT;break;case VK_CONTROL:MaskBits|=CTRLBIT;break;case VK_SHIFT:MaskBits|=SHIFTBIT;break;default: /judge the key and send messagebreak;for(int index=0;indexMAX_KEY;index+)if(hCallWndindex=NULL)continue;if(IsWindow(hCallWndindex)&(HotKeyindex=wParam)&(HotKeyMaskindex=MaskBits)SendMessage(hCallWndindex,WM_HOTKEY,wParam,WM_KEYDOWN);bProcessed=TRUE;if(!bProcessed) /一般按鍵事件,為監(jiān)視鍵盤的程序留出余地for(int index=0;index 1000#pragma once#endif / _MSC_VER 1000#ifndef _AFXWIN_H_#error include stdafx.h before including this file for PCH#endif#include resource.h / main symbols class CHookApp : public CWinApppublic:CHookApp();/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CHookApp)public:virtual BOOL InitInstance();virtual int ExitInstance();/AFX_VIRTUAL/AFX_MSG(CHookApp)/ NOTE - the ClassWizard will add and remove member functions here./ DO NOT EDIT what you see in these blocks of generated code !/AFX_MSGDECLARE_MESSAGE_MAP();LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam, LPARAM lParam);BOOL _declspec(dllexport)_stdcall AddHotkey(HWND,UCHAR key,UCHAR mask);BOOL _declspec(dllexport)_stdcall DeleteHotkey(HWND,UCHAR key,UCHAR mask);BOOL InitHotkey();BOOL UnInit();#endif / Hook.cpp : Defines the initialization routines for the DLL.#include stdafx.h#include hook.h#include #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif#define MAX_KEY 100#define CTRLBIT 0x04#define ALTBIT 0x02#define SHIFTBIT 0x01 #pragma data_seg(shareddata)HHOOK hHook =NULL;UINT nHookCount =0;static UCHAR HotKeyMAX_KEY = 0; /hotkeystatic UCHAR HotKeyMaskMAX_KEY = 0; /flag for hotkey, value is VK_CONTRL or VK_NEMU or VK_SHIFTstatic HWND hCallWndMAX_KEY = 0; /window associated with hotkeystatic int KeyCount =0;static UCHAR MaskBits =0; /00000 Ctrl Alt Shift#pragma data_seg()HINSTANCE hins;void VerifyWindow();BEGIN_MESSAGE_MAP(CHookApp, CWinApp)/AFX_MSG_MAP(CHookApp)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO NOT EDIT what you see in these blocks of generated code!/AFX_MSG_MAPEND_MESSAGE_MAP()CHookApp:CHookApp()/ TODO: add construction code here,/ Place all significant initialization in InitInstanceCHookApp theApp;LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam) BOOL bProcessed=FALSE;if(HC_ACTION=nCode)if(lParam&0xc0000000)=0xc0000000)/ Key upswitch(wParam)case VK_MENU:MaskBits&=ALTBIT;break;case VK_CONTROL:MaskBits&=CTRLBIT;break;case VK_SHIFT:MaskBits&=SHIFTBIT;break;default: /judge the key and send messagebreak;for(int index=0;indexMAX_KEY;index+)if(hCallWndindex=NULL)continue;if(IsWindow(hCallWndindex)&(HotKeyindex=wParam)&(HotKeyMaskindex=MaskBits)SendMessage(hCallWndindex,WM_HOTKEY,wParam,WM_KEYUP);bProcessed=TRUE;else if(lParam&0xc000ffff)=1) /Key downswitch(wParam)case VK_MENU:MaskBits|=ALTBIT;break;case VK_CONTROL:MaskBits|=CTRLBIT;break;case VK_SHIFT:MaskBits|=SHIFTBIT;break;default: /judge the key and send messagebreak;for(int index=0;indexMAX_KEY;index+)if(hCallWndindex=NULL)continue;if(IsWindow(hCallWndindex)&(HotKeyindex=wParam)&(HotKeyMaskindex=MaskBits)SendMessage(hCallWndindex,WM_HOTKEY,wParam,WM_KEYDOWN);bProcessed=TRUE;if(!bProcessed)for(int index=0;index1)nHookCount-;return TRUE;BOOL unhooked = UnhookWindowsHookEx(hHook);if(unhooked=TRUE)nHookCount=0;hHook=NULL;return unhooked; BOOL _declspec(dllexport) _stdcall AddHotkey(HWND hWnd,UCHAR cKey,UCHAR cMask)BOOL bAdded=FALSE;for(int index=0;indexMAX_KEY;index+)if(hCallWndindex=0)hCallWndindex=hWnd;HotKeyindex=cKey;HotKeyMaskindex=cMask;bAdded=TRUE;KeyCount+;break;return bAdded;BOOL _declspec(dllexport) _stdcall DeleteHotkey(HWND hWnd,UCHAR cKey,UCHAR cMask)BOOL bRemoved=FALSE;for(int index=0;indexMAX_KEY;index+)if(hCallWndindex=hWnd)if(HotKeyindex=cKey&HotKeyMaskindex=cMask)hCallWndindex=NULL;HotKeyindex=0;HotKeyMaskindex=0;bRemoved=TRUE;KeyCount-;break;return bRemoved;void VerifyWindow()for(int i=0;i 1000#pragma once#endif / _MSC_VER 1000class
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國肉牛/羊?qū)S脻饪s料行業(yè)投資前景及策略咨詢研究報告
- 2025年中國水冷四沖跨式摩托車市場調(diào)查研究報告
- 醫(yī)療設(shè)備租賃合同履行與終止考核試卷
- 2025年西餐廳后廚食材追溯與質(zhì)量控制合同3篇
- 2024裝修公司工程裝修合同范本
- 2025年度體育設(shè)施承包經(jīng)營合同賠償與賽事組織3篇
- 2025年離婚協(xié)議起草與婚姻登記協(xié)助合同3篇
- 2025年物業(yè)保潔外包服務(wù)合同(含社區(qū)文化活動支持)3篇
- 物業(yè)服務(wù)公司2025年度收費員委托合同6篇
- 銀川二零二五年度存量房買賣合同簽訂流程與風(fēng)險防范2篇
- 服裝板房管理制度
- 2024年縣鄉(xiāng)教師選調(diào)進(jìn)城考試《教育學(xué)》題庫及完整答案(考點梳理)
- 車借給別人免責(zé)協(xié)議書
- 河北省興隆縣盛嘉恒信礦業(yè)有限公司李杖子硅石礦礦山地質(zhì)環(huán)境保護(hù)與治理恢復(fù)方案
- 第七章力與運動第八章壓強第九章浮力綜合檢測題(一)-2023-2024學(xué)年滬科版物理八年級下學(xué)期
- 醫(yī)療機構(gòu)診療科目名錄(2022含注釋)
- 微視頻基地策劃方案
- 光伏項目質(zhì)量評估報告
- 八年級一本·現(xiàn)代文閱讀訓(xùn)練100篇
- 2023年電池系統(tǒng)測試工程師年度總結(jié)及下一年計劃
- 應(yīng)急預(yù)案評分標(biāo)準(zhǔn)表
評論
0/150
提交評論