




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Windows編程教案第一課 最簡單的Windows程序(2學時)Windows編程是一個很大的主題,涉及的方面也非常的多。Windows始于90年代,至今Windows編程的發展已經非常成熟了,而單獨直接使用API的開發也是越來越少了。因此,市面上很少有泛泛的簡單入門級的Windows程序設計了。一個是系統級的Windows編程介紹,如Windows核心編程。一個是方向級的Windows編程介紹如Windows圖形編程,Windows網絡編程等等。我們這次課的主要參考用書是Windows核心編程,同時也參考了一些其他內容。鑒于教材的價格較貴,同時也需要考慮我們自身的學習內容不一定很多以及學時
2、的原因,就沒有定教材。看我的教案吧。(1) Win32 APIAPI : Application Program Interface。應用程序接口。API就是在進行Windows編程時使用的函數庫。本課就是Windows編程=API+C語言(或者C+語言)(2) 開發環境我校機器上安裝了VC+ 6.0。相信這是大家一直以來學習C,C+使用的開發環境。但VC60離我們實在太遠了,它是一款90年代的產品,已經近20年的歷史了。我們機器里還有VS2005 或 VS2008,那里面的C環境要比VC60強太多了,強烈建議大家使用更高級的平臺。本次授課的開發環境有兩個。一個是輕量級的DEV C+,一個是重
3、量級的VS2010.簡單程序我們都將用DEV C+來實現。DEV C+是一個非常小的C環境,但性能要優于VC60,調試環境不如VC60。這個環境在我們的共享資源里有,大家可以下載安裝。安裝過程非常簡單,一直下一步即可。這是其主界面。(3) 最簡單的Windows程序提到最簡單的程序,幾乎所有的人都會想起經典的HelloWorld。這不是Windows程序,如果在以前這叫DOS程序,現在叫Windows控制臺應用程序。它不算Windows程序,但它很簡單的就把Helloword顯示到屏幕上了。而Windows程序要想把HelloWorld顯示在屏幕上就確實不容易了。3.1 訪問Helloworl
4、d網站,因為把Helloworld顯示在屏幕上并不容易,我們可以一點一點來,先讓Helloworld以文字形式出現在其他地方,這里我們通過訪問網站。把helloworld展現在網頁瀏覽器的地址欄上。真有這個網站嗎?唉,貌似還真有。運行程序,打開瀏覽器并訪問網站。這是Windows程序。Windows程序和我們以前的程序有什么不同呢?l Windows程序不能使用scanf,printf,cin,cout。所以輸出helloworld變得沒有以前容易了。l windows程序一定要#include <windows.h>l windows程序的主函數不是main,是WinMain。注
5、意區分大小寫。l 主函數的參數不一樣了int main(int argc ,char * argv)int WinMain(HINSTANCE hInstance, HINSTANCE,LPSTR lpStr,int nShow)絕大多數的人,初次接觸Windows編程都會被其冗長的名字所折服,啊,沒辦法,這就是Windows的命名規格,叫匈牙利命令法,是微軟的一個匈牙利籍的程序員發明的,它的作用的能夠讓變量,類型名能夠真實的反應其代表的意義,這對英語人士自然很好。對英語不好的接受起來就有點難了。詳細解釋一下WinMain是Windows編程的主函數。一定注意大小寫啊。HINSTANCE,用W
6、indows的說法叫句柄數據類型。但它并不是一個新的數據類型,它是通過#define定義出來的。#define DECLARE_HANDLE(name) struct name#_int unused; typedef struct name#_ *nameDECLARE_HANDLE(HINSTANCE);上面兩行是windef.h中對HINSTANCE的定義。說到底HINSTANCE就是一個指針類型。LPSTR 是 typedef char * LPSTR。Windows編程里有大量通過#define和typedef定義出來的數據類型名。本質上它們都不是新的東西,都是以前我們在C語言學過的
7、哪些數據類型另起了一個名字。為什么要這么做呢?一般Windows 程序比較大,好的命名利于維護和避免錯誤。總之,說到底,舊壺裝新酒,貌似多了很多數據類型,不要被它們嚇到,它們就是比C語言你們學過的東西多穿了件馬甲。第二課 在窗口中顯示HelloWorld中(4學時)1、 第一課的HelloWorld出現在網頁上。這不是我們的目的,我們要生成正常一點的HelloWorld。Windows程序中要顯示HelloWorld看來還不是太容易。(1) 將HelloWorld繪制到桌面補充說明如果要讓這個程序順利執行,需要寫的內容是lgdi32運行的效果,helloworld顯示在桌面上了看到HelloW
8、orld了嗎。說明l WinMain是Window的主函數l HDC 是個什么呢,本質上是個指針,但是我們不需要了解它指向了什么,因此,簡而化之HDC是一個32位的無符號整數。HDC叫設備上下文句柄。設備上下文指顯示器屏幕或打印機什么的。句柄有點類似文件句柄的意思,有了它才能操作設備。在這里有了它才能向設備上繪制。所有涉及繪圖的地方都涉及HDC。GetDC(窗口句柄)。如果使用GetDC(NULL)得到桌面的設備上下文。否則可以得到一個窗口的設備上下文,我們可以在窗口上進行繪制。(2) LPTSTR 是 TCHAR * 的另一個寫法(3) TextOut是Windows API的一個函數,功能
9、是將文本寫到設備上下文上。 TextOut(HDC,橫坐標,縱坐標,字符串,字符串長度)(4) ReleaseDC(窗口句柄,HDC)釋放設備上下文 GetDC的得到的HDC一定要用ReleaseDC釋放,否則機器容易資源耗盡。2、 在一個獨立窗口中顯示HelloWorld,這是重點了,涉及一些Windows編程重要的內容分如下幾個步驟(1) 定義一個全局函數(2) 定義WinMain函數(3) 在WinMain函數內注冊窗口類lpszClassName:自己取個名字,字母lpfnWndProc:函數指針,為我們在第一步定義的函數名。用強制類型轉換在Windows中顯示一個窗口,一定要先注冊窗
10、口類。函數式RegisterClassEx(&wc)(4) 創建并顯示窗口(5) 建立消息循環(6) 補充處理WM_PAINT,補充WndProc函數總結:創建窗口的模式是基本是固定的,本課的代碼很大一部分就是這么寫。主要在WndProc內存在不同。涉及的API函數RegisterClassEx(&WNDCLASSEX)WinMain(HINSTACNE,HINSTANCE,LPSTR,int nShow)DefWindowProc(HWND,UINT,WPARAM,LPARAM)GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterM
11、in,UINT wMsgFilterMax).如果得到WM_QUIT返回0TranslateMessage(&MSG)DispathMessage(&MSG)BeginPaint(&PAINTSTRUCT)TextOut(HDC,INT,INT,LPSTR,INT)EndPaint(HWND,&PAINTSTRUCT)作業:自己建立應用,在窗口100,100位置顯示HelloWorld第三課 坐標位置及大小(4學時)在我們寫控制臺應用的時候,不能自由的控制輸出顯示的位置。因此,沒有學習過這方面的內容,現在我們創建了窗口,并且在窗口上顯示了Hello World。
12、這個過程涉及到很多涉及位置和大小的因素,如窗口的大小,顯示的位置,文字顯示的位置。說到位置,就涉及定位,說到定位就要說坐標系。在屏幕上顯示內容涉及到坐標空間的知識。在Windows應用中坐標空間分如下幾部分內容1、 物理坐標空間物理坐標空間,指的是物理設備上對應的坐標系。如顯示器坐標原點在左上角。如下是一個1024*768的屏幕物理坐標(0,0)(1024,0)(0,768)2、 設備坐標空間基于設備上下文指定的坐標空間。如窗口內顯示的文本,使用的坐標就是基于窗口內上下文的坐標。可以看到設備空間是物理空間體系的一個子空間。設備空間可以依賴于一個窗口。換句話可以把設備空間理解為在物理空間上顯示的
13、一個對象,其子空間。下面我們通過一個小例子理解物理空間和設備空間在窗口的標題條,以設備坐標,和物理坐標的形式顯示鼠標在窗口內的位置WndProc處理消息循環WM_MOUSEMOVE,鼠標移動時消息標識,是個整數。其參數lParam,的第16位代表設備坐標中的X,高16位代表設備坐標的Y。POINT 是結構體。只有x,y兩個成員ClientToScreen,將設備坐標轉換為屏幕坐標(物理坐標)sprintf:格式化字符串SetWindowText:設Window標題3、 頁面坐標空間(邏輯坐標空間的一種)作用,可以任意指定坐標原點,坐標軸方向,比例尺等信息。可以用來與設備無關的大小如厘米,毫米等
14、。頁面坐標叫窗口,其表示有原點(X,Y),寬度,高度組成(WIDTH,HEIGHT)設備坐標叫視口,其表示有原點(x,y),寬度,高度組成(width,height)頁面坐標和設備坐標的變換關系,大寫為設備坐標,小寫為頁面坐標PX=X+(px-x)*WIDTH/widthPY=Y+(py-y)*HEIGHT/heightpx=x+(PX-X)*width/WIDTHpy=y+(PY-Y)*heigh/HEIGHTGDI函數使用頁面坐標,顯示出來時是設備坐標通過對窗口,是否對應的四個參數的設置,可以實現特殊的變換。頁面坐標是邏輯坐標的一種。在這個例子中我們一直使用MoveToEx(ps.hdc,
15、0,0,NULL); LineTo(ps.hdc,30,30);劃線,MoveToEx是把畫筆移動到指定位置(頁面坐標),LineTo是從畫筆所在位置到目標位置畫一條線。在這個例子中,每次劃線前通過設置視口,窗口結果使劃線的結果不同。這種形式的坐標轉換無法實現旋轉4、 世界坐標空間(邏輯坐標空間的另一種)功能:比頁面坐標空間方便,可以實現旋轉結構體XFORMFLOAT eM11,FLOAT eM12,FLOAT eM21,FLOAT eM21,FLOAT eDx,FLOAT eDy,世界坐標到設備坐標的變換。小寫到大寫。PX=eM11*px+eM21*py+eDx;PY=eM12*px+eM2
16、2*py+eDy;默認為1,0,0,1,0,0 和設備坐標相同1001dxdymx00my00縮放-100-100映像旋轉cos(a),sin(a),-sin(a),cos(a),0,0順時針旋轉a度cos(a),-sin(a),sin(a),cos(a),0,0逆時針旋轉a度我們下面的例子通過Rectangle(ps.hdc,0,0,50,50);繪制50*50的矩形,用循環配合世界坐標變換繪制特殊的圖形 循環20次,每次旋轉坐標軸的方向,繪制正方形。總結:物理坐標指的是屏幕坐標,不能改變坐標軸設備坐標指的是窗口坐標,不能改變坐標軸頁面坐標和世界坐標均是邏輯坐標,可以改變坐標軸,世界坐標功能
17、更強,可以旋轉。理解這些概念的繪圖是很重要的。相關函數BOOL ClientToScreen( HWND hWnd, LPPOINT lpPoint); 設備坐標轉屏幕坐標BOOL ScreenToClient( HWND hWnd, LPPOINT lpPoint);屏幕坐標轉設備坐標int MapWindowPoints( HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints, UINT cPoints); 各個窗口設備坐標之間的轉換BOOL SetWindowOrgEx( HDC hdc, int X, int Y, LPPOINT lpPoint )
18、;設置窗口的原點SetViewportOrgEx( HDC hdc, int X, int Y, LPPOINT lpPoint);設置視口的原點BOOL SetViewportExtEx( HDC hdc, int nXExtent, int nYExtent, LPSIZE lpSize);設置視口的width,heightBOOL SetWindowExtEx( HDC hdc, int nXExtent, int nYExtent, LPSIZE lpSize );設置窗口的width,heightSetMapMode設置頁面坐標的映射模式SetGraphicsMode設置世界坐標的映
19、射模式Rectangle繪制矩形,并填充內部SetWorldTransform設置世界坐標變換LineTo:換線MoveToEx:移動畫筆SetWindowText設置窗口標題LPtoDP(hdc,LPPOINT,int)把邏輯坐標點轉換為設備坐標點作業:使用movetoex,lineto,LPtoDP及世界坐標變換,繪制正六邊形提示:畫一條水平線后,將坐標原點移動到線的末尾,并將坐標軸旋轉60度*n,重復上步要將坐標移動到線尾需要使用LPtoDP第四課 色彩及繪制(6學時)(1)畫點像素:計算機屏幕上的一個點。是計算機屏幕顯示的最小單位。點的個數取決于計算機的分辨率。如1024*768,則屏
20、幕由1024*768個點組成。每個點都可以獨立的顯示一個顏色。計算機能夠表示的顏色有256*256*256=16777216種。顏色的表示 COLORREF 。定義顏色RGBCOLORREF color=RGB(紅,綠,藍)隨機繪制顏色點需要#include<cstdlib>srand:隨機種子函數,傳遞的參數不同,可以生成不同的隨機數序列GetTickCount(): API函數,得到系統開機后到現在的滴答數,特點就是每次返回的結果不重復。兩者的配合得到不重復的隨機數序列rand得到函數SetPixel設置某點的顏色(2) 畫線在以前的例子里我們一直用1個像素寬的黑色實現來畫線。
21、現在我們學習創建畫筆,用畫筆來畫線。步驟 1、創建畫筆CreatePen(畫筆類型,寬度,顏色) 2、將畫筆選入設備上下文SelectObject 3、用畫筆繪制 4、將畫筆選出設備 5、刪除創建的畫筆對象SelectObject是將GDI對象畫筆選入設備上下文,并將當前的選出返回。因此我們兩次使用SelectObject,最后一個將以前的畫筆選入,返回我們創建的,并在下一步刪除畫筆。虛線只能支持寬度1.畫線函數Polygon(HDC,LPPOINT,INT).連接指定點,畫多邊形,封閉。如果畫4邊形則確認3個點即可。Polyline(HDC,LPPOINT,INT).連接指定點,畫多邊,不封
22、閉MoveToEx:移動畫筆LineTo:用當前的畫筆劃線Arc:畫圓弧 BOOL Arc( HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nXStartArc, int nYStartArc, int nXEndArc, int nYEndArc );前4個是畫圓弧的矩形,后四個指定了弧開始和結束的位置作業:畫一條正弦曲線使用SexPixel,LineTo,MoveToEx實現(3) 畫面畫面就是用畫刷來填充步驟 1、創建畫刷CreateSolidBrush(顏色) 2、將畫刷選入設備上下
23、文SelectObject 3、用畫刷填充 4、將畫刷選出設備 5、刪除創建的畫刷對象用藍色畫刷填充矩形,矩形的邊框是黑色。CreateSolidBrush:創建顏色畫刷Rectangle:繪制矩形,用當前的Pen繪制邊框,用當前的Brush來填充矩形內部FillRect:畫刷填充矩形。FillRect(hdc,&RECT,HBRUSH)使用FillRect不繪制邊框,因為參數中有畫筆,也不用SelectObject了。Ellipse:橢圓,圓。畫邊框,填充Pie:圓餅(4) 位圖將文件系統中的位圖顯示到窗口中。繪制位圖步驟1、 根據現有的設備上下文創建兼容的設備上下文2、 加載位圖3
24、、 繪制圖像4、 刪除加載的位圖5、 刪除兼容的設備上下文BitBlt是在設備上下文之間拷貝圖像的函數,非常常用在上一個列子的基礎上,得到位圖的大小并繪制實際大小的位圖作業:在一個窗口上顯示一副位圖文件(*.bmp)。(5) 字體和文本創建邏輯字體并顯示文本步驟1、 創建邏輯字體2、 選入字體3、 輸出文本4、 選出字體5、 刪除字體另一個與文本繪制有關的功能更強的函數是DrawText總結:本課介紹了一些基本的繪圖操作,其中涉及了較多的函數,這里只是介紹了基本的使用方式和原理。函數srandrandGetClientRectSetPixelLineToMoveToExCreatePenCre
25、ateSolidBrushCreateFontIndirectBitBltSelectObjectDeleteObjectCreateCompatibleDCLoadImageRectangleFillRectDeleteDC等等。第五課 常用控件的使用(6學時)在上面的幾節課程中我們學習了如何建立Windows 應用,并在圖形環境下繪制圖形。這些操作都是控制臺應用中沒有的。本章我們介紹如何在窗口中加入按鈕等常規控件,并且處理它們。一般控件種類,按鈕,列表組合,編輯,列表,滾動條,靜態文本。控件是一種特殊的窗口。這些特殊窗口的類已經由Windows系統注冊了,不需要我們注冊。這些類的名字分別為
26、。BUTTON,COMBOBOX,EDIT,LISTBOX,SCROLLBAR,STATIC(1) 創建任何時候均可,但通常在WM_CREATE事件中處理WM_CREATE是在窗口創建時觸發WM_DESTORY是在窗口銷毀時觸發控件用CreateWindow創建,返回控件窗體的句柄,窗體的類型一定為WS_CHILDWINDOW。附加的類型以或關系疊加。具體要參見MSDN(2) 操控控制這些控件是通過向這些控件的窗體句柄發送特點消息來實現的如 SendMessage(控件句柄,消息指,參數1,參數2)具體設置參見MSDN在上面的例子,我們處理下拉列表的時候使用了SendMessage發送消息(3
27、) 反饋我們操作控件會觸發控件的事件得到一些反饋,下面介紹如何得到這些反饋。總體上,我們把這些反饋過程叫通知。通知的過程是將反饋發送給父窗體,一般父窗體有兩個事件接收控件的反饋WM_NOTIFY,WM_COMMAND。WM_COMMANDHIWORD(wParam)通知消息號LOWORD(wParam)控件標識WM_NOTIFYwParam :控件標識lParam:NHMDR的指針比如按鈕的單機對應的事件是BN_CLICKED。該事件通過WM_COMMAND通知。我們把上個例子補充完整,并且為每個控件指定ID,指定的方式是在(HMENU)的后面寫個整數,原則上應該不同。HIWORD,得到一個字
28、的高字節。LOWORD得到一個字的低字節。(4) 通用控件我們上面介紹的是基本的控件,除了這些基本控件外還有一些通用控件。這些控件的使用和處理和基本的控件差不多,但功能更強大。ANIMATE_CLASS : 動畫控件,播放AVI動畫DATETIMEPICK_CLASS :日期時間下拉控件HOTKEY_CLASS :定義熱鍵的控件MONTHCAL_CLASS : 月份選擇控件PROGRESS_CLASS :進度條控件REBARCLASSNAME :rebar控件STATUSCLASSNAME:狀態條控件TOOLBARCLASSNAME :工具條TOOLTIPS_CLASS :提示控件TRACKB
29、AR_CLASS :軌跡條UPDOWN_CLASS :上下箭頭WC_COMBOBOXEX :組合框擴展WC_HEADER :頭控件WC_IPADDRESS :IP地址控件WC_LISTVIEW :listview控件WC_PAGESCROLLER :頁滾動控件WC_TABCONTROL :tabControl控件WC_TREEVIEW :樹視圖控件通用控件在使用前使用InitCommonControlsEx初始化。使用這些通用控件要include <commctrl.h>同時在連接時要連接 comctl32.dll頭部這些控件和IE有關系,根據IE版本不同,控件的外觀和功能有區別。
30、(5) 創建菜單CreateMenu:創建一個菜單CreatePopupMenu:創建一個子菜單AppendMenu:向菜單增加項目SetMenu:將菜單聯系到窗口第六課 進程及線程(2學時)l 進程:是一個正在運行的程序的實例。由兩個部分組成1、 一個是操作系統用來管理進行的內核對象。內核對象是系統用來存放關于進程信息的地方。2、 地址空間,每個進行都有自己的地址空間進程本身不執行代碼,進程要至少擁有一個線程,由線程來執行代碼。每個線程都擁有自己的CPU寄存器和堆棧。當創建一個進程時系統會自動創建一個主線程。CreateProcess創建進程 內部執行細節:1 創建一個小的結構存放進程信息
31、2 分配地址空間 3 創建一個小的結構存放線程信息 4 執行C/C+啟動代碼,最終會調用WinMain或main。結束一個進程 TerminateProcessTerminateProcess1 使用ToolHelp遍歷系統進程列舉系統全部的進程需要#include <Tlhelp32.h>#include <string>using namespace std;l 線程線程由兩個部分組成1 內核對象2 線程堆棧,用于維護執行代碼時所有的函數參數和局部變量進程是活波的,進程不執行任何東西,它是線程的容器。線程在進程的地址空間中執行代碼。如果一個進程擁有多個線程則這些線程
32、共享進程地址空間內的代碼和數據。進程的地址空間要比線程占用更多的系統資源,因此要更多的使用線程。每個線程必須有個入口點函數,主線程是main,WinMain。如果要創建一個線程,則這個線程的函數原型是這樣的。DWORD WINAPI ThreadProc(PVOID pvParm) return value;因為線程會共享全局變量,因此多線程應該少使用全局變量1 線程創建 線程的創建不能直接使用CreateThread API函數。而要使用C編譯環境自帶的創建進程函數。#include <process.h>unsigned uThreadid=0;uintptr_t hThrea
33、d= _beginthreadex(NULL, 0,ThreadProc,NULL,CREATE_SUSPENDED,&uThreadid);第3個參數是線程函數地址,第4個參數是傳遞到線程的LPVOID,第5個參數為0線程馬上運行、CREATE_SUSPENDED需要激活才能運行。最后一個保存線程的ID進程和線程ID是一個標識。不重復。進程和線程對象是系統對象,關閉這些對象對進程和線程的運行沒有影響。第7課 線程的調度和同步(6學時)線程暫停: 創建時使用CREATE_SUSPENDED創建一個暫停的線程 使用SuspendThread暫停線程 長時間不使用窗體恢復線程: Resum
34、eThread ResumeThread和SuspendThread使用次數要對應。休眠線程 Sleep(毫秒)線程的同步是比較容易出錯的地方,要多多實踐和理解。參見線程沖突的例子。每個線程對變量g累加10000次,創建6個線程,這是其中一次的運行結果。可以看到結果不是60000.對線程沖突問題的解釋1條 C的g+對應的匯編指令為3條mov eax,ginc eaxmov g,eax如果我們創建兩個線程,這兩個線程將共享上面的代碼。如果只有一個CPU的話,那同一時刻只能志執行一條匯編指令。但Windows的調度機制可以保證代碼按順序執行,但不能保證不被打斷。舉例g=0mov eax,g /1
35、eax=0inc eax /1 eax=1mov g,eax /1 g=1 eax=1mov eax,g /2 eax=1inc eax /2 eax=2mov g,eax /2 g=2 eax=21和2兩個線程分別執行上面的3行代碼,則g被加了兩次,得到2。但實際上這是多線程的特例。真實的情況是CPU下條要執行那個線程的代碼是隨機的。如下g=0mov eax,g /1 eax=0inc eax /1 eax=1mov eax,g /2 eax=0inc eax /2 eax=1mov g,eax /2 g=1 eax=1mov g,eax /1 g=1 eax=1線程1在增加后沒有及時賦值給g,然后線程2執行。最后g為1。這就是線程沒有同步導致的問題,也是我們程序中出現的問題。解決方法(1)原子操作函數使用InterlockedExcha
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三門峽職業技術學院《攝影技術基礎與應用》2023-2024學年第二學期期末試卷
- 四川文化傳媒職業學院《圖形與圖像處理》2023-2024學年第二學期期末試卷
- 湖南鐵道職業技術學院《醫學心理學》2023-2024學年第二學期期末試卷
- 2023-2024學年山東省青島五十九中學中考三模數學試題含解析
- 內蒙古自治區呼和浩特市開來中學2025年八年級英語第二學期期中復習檢測模擬試題含答案
- 四川省成都市部分學校2025年七年級英語第二學期期中考試模擬試題含答案
- 中科大熱工基礎課件第3章理想氣體
- 2024年度浙江省二級建造師之二建市政工程實務自我提分評估(附答案)
- 機動車保險勘察技術課件
- 彩色幾何商務時間軸模板
- 國家開放大學《礦井水害防治》形考任務1-3參考答案
- 車間培訓課件教學課件
- 汽車維修企業安全生產事故隱患排查治理制度
- 某化纖毛紡織廠全廠總配變電所及配電系統設計-課程設計論文
- 2024年大學試題(法學)-行政法與行政訴訟法考試近5年真題集錦(頻考類試題)帶答案
- 有限空間辨識記錄(辨識結果不是有限空間的)
- 小學英語時態練習大全(附答案)-小學英語時態專項訓練及答案
- 醫院整體搬遷服務 投標方案(技術方案)
- 魚塘個人承包協議書范本
- 帶轉速微分負反饋的雙閉環直流調速系
- 國家公務員考試行測行政職業能力測驗(行政執法)2025年模擬試題及答案解析
評論
0/150
提交評論