




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精品 課程設(shè)計報告課 程 名 稱: 基于Windows的課程設(shè)計 題 目: 應(yīng)用程序與DLL 年級/專業(yè)/班: 計算機(jī)09-3班 學(xué) 生 姓 名: 學(xué) 號: 一 設(shè)計要求<1>編寫一個Windows應(yīng)用程序產(chǎn)生一個窗口,該窗口能夠?qū)Υ翱谏系南⑦M(jìn)行響應(yīng)。即當(dāng) 鼠標(biāo)單擊相應(yīng)區(qū)域或者菜單后,程序會調(diào)用你的dll函數(shù)給出結(jié)果。<2>編寫一個DLL,至少包含兩個以上的接口函數(shù)供上述應(yīng)用程序調(diào)用<3>使用C+Win32函數(shù),而不是MFC框架,體會windows消息機(jī)制。所有的代碼自己完成二 目的<1>Windows消息循環(huán)機(jī)制<2>DLL機(jī)制課
2、本中OS消息傳遞機(jī)制Windows窗口消息循環(huán)機(jī)制,DLL機(jī)制課本中內(nèi)存管理機(jī)制Windows DLL機(jī)制在進(jìn)程地址空間中的位置三 背景知識3.1 Windows 應(yīng)用程序3.1.1 WinMain入口點(diǎn) 函數(shù)功能:該函數(shù)被系統(tǒng)調(diào)用,作為一個32位應(yīng)用程序的入口點(diǎn)。函數(shù)原型:int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);參數(shù);<1>hInstance:應(yīng)用程序當(dāng)前事例的句柄。<2>hPrevlnstance:應(yīng)用程序的先事例的
3、句柄。對于同一個程序打開兩次,出現(xiàn)兩個窗口第一次打開的窗口就是先前實(shí)例的窗口。對于一個32的位程序,該參數(shù)總為NULL。 如果需要檢測另外一個事例是否已經(jīng)存在,則使用CreateMutex函數(shù)創(chuàng)建一個獨(dú)一無二的名字。即使互斥名已經(jīng)存在,CreateMutex函數(shù)也是成功的,但是GetLastError函數(shù)將返回 ERROR_ALREADY_EXISTS,這就表明在應(yīng)用程序中有另外一個事例存在,因?yàn)樗紫葎?chuàng)建了互斥名。<3>lpCmdLine:指向應(yīng)用程序命令行的空字符串的指針,不包括函數(shù)名。獲得整個命令行,參看GetCommandLine <4>nCmdShow:指明窗
4、口如何顯示。該參數(shù)可以是下列值之一:SW_HIOE:隱藏窗口并且激活另外一個窗口。SW_MINIMIZE:最小化指定的窗口,并且激活在系統(tǒng)表中的頂層窗口。SW_RESTORE:激活并顯示窗口。如果窗口已經(jīng)最小化或最大化,系統(tǒng)將以恢復(fù)到原來的尺寸和位置顯示窗口(與SW_SHOWNORMAL相同)。SW_SHOW:激活一個窗口并以原來的尺寸和位置顯示窗口。SW_SHOWMAXIMIZED:激活窗口并且將其最大化。SW_SHOWMINIMIZED:激活窗口并將其目標(biāo)化。SW_SHOWMINNOACTIVE:將一個窗口顯示為圖標(biāo)。激活窗口維持活動狀態(tài)。SW_SHOWNA:以窗口的當(dāng)前狀態(tài)顯示窗口。激活
5、窗口保持活動狀態(tài)。SW_SHOWNOACTIVATE:以窗口的最近一次的尺寸和位置顯示窗口。激活窗口維持激活狀態(tài)。SW_SHOWNORMAL:激活并顯示窗口。如果窗口最大化或最小化,系統(tǒng)將其恢復(fù)到原來的尺寸和位置(與SW_RESTORE相同)。<5> 返回值:如果函數(shù)成功,當(dāng)它接收到一個WM_QUIT消息時就中止,函數(shù)應(yīng)該返回在該消息的wParam參數(shù)的退出值。如果函數(shù)在進(jìn)入消息循環(huán)時退出,應(yīng)該返回零。3.1.2 窗口類的注冊與創(chuàng)建3.1.2.1 窗口類的注冊一個應(yīng)用程序在創(chuàng)建某個類型的窗口前,必須首先注冊該“窗口類”(Windows Class)。 “窗口類”是Windows系統(tǒng)
6、的數(shù)據(jù)結(jié)構(gòu),可以把它理解為Windows系統(tǒng)的類型定義,而Windows窗口則是相應(yīng)“窗口類”的實(shí)例。Windows使用一個結(jié)構(gòu)來描述“窗口類”,其定義如下: typedef struct _WNDCLASSEX UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HANDLE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; HICON hIconSm
7、; WNDCLASSEX; 其中style 是窗口樣式,通過系統(tǒng)預(yù)先定義的一些常量來設(shè)置窗口樣子,這些常量包CS_BYTEALIGNCLIENT(表示窗口客戶區(qū)以 byte 的寬度對齊)、CS_DBLCLKS(如果有雙擊會向窗口發(fā)送消息)、CS_NOCLOSE(無關(guān)閉按鈕)等。 lpfnWndProc 是消息處理函數(shù)。 hInstance 應(yīng)該賦值為應(yīng)用程序的實(shí)例。 hIcon,hCursor,hbrBackground,lpszMenuName 分別為窗口類的圖標(biāo)、鼠標(biāo)指針的樣式、背景的畫刷(COLOR_ BACKGROUND、COLOR_WINDOW 等,也可以自行建立畫刷)、菜單名。 可
8、以從資源獲取圖標(biāo)、鼠標(biāo)指針的樣式和菜單。 應(yīng)用程序在創(chuàng)建自己的窗口時,首先必須注冊自己的窗口類。 窗口類的注冊雖然只需填充一個結(jié)構(gòu)體,調(diào)用一個 API 函數(shù),但是窗口注冊結(jié)構(gòu) WNDCLASSEX或 WNDCLASS結(jié)構(gòu)的設(shè)置較復(fù)雜,需注意設(shè)置的正確性。3.1.2.2 窗口類的創(chuàng)建WinMain 函數(shù)調(diào)用的 InitInstance 函數(shù)實(shí)現(xiàn)了程序主窗口的創(chuàng)建。CreateWindow CreateWindowEx 是用于創(chuàng)建窗口的 API 函數(shù)。 CreateWindow 函數(shù) CreateWindow 函數(shù)的功能是創(chuàng)建一個窗口。在創(chuàng)建窗口前,需先注冊窗口類。如果創(chuàng)建的窗口是系統(tǒng)控件,那么系
9、統(tǒng)控制的類已經(jīng)由操作系統(tǒng)注冊好,所以不再需要注冊。 創(chuàng)建窗口時,通過窗口指定窗口名、窗口樣式、窗口的大小和位置、窗口所屬的父窗口等。 HWND CreateWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hlnstance, LPVOID lpParam ); <1>參數(shù)lpClassName 是窗口所需窗口類的類名。 <2>參數(shù)lpWi
10、ndowName 是窗口名,如果窗口有標(biāo)題欄,窗口名將顯示在標(biāo)題欄上。 <3>參數(shù)dwStyle是窗口樣式。窗口是否具有標(biāo)題欄,是否可改變大小,邊框的樣式等都通過這個參數(shù)設(shè)置, <4>參數(shù) x、y 指定了窗口創(chuàng)建后的初始位置,編程時可以設(shè)置為 CW_USEDEFAULT,由 系統(tǒng) 來設(shè)置。 <5>參數(shù)nWidth、nHeight,表示窗口的寬和高,以像素點(diǎn)為單位,同樣也可以指定為 CW_USEDEFAULT,使用系統(tǒng)默認(rèn)。 <6>參數(shù)hMenu 是窗口菜單的句柄,如果設(shè)置為 NULL,表示使用窗口類的菜單。 hWndParent 是窗口的父窗口句
11、柄,當(dāng)窗口樣式有 WS_CHILD 時需設(shè)備父窗口句柄。 <7>參數(shù)hInstance 是應(yīng)用程序?qū)嵗O(shè)置為 WinMain 函數(shù)參數(shù) hInstance。 lpParam指定相關(guān)參數(shù),指向 CREATESTRUCT 結(jié)構(gòu)的變量,可以為 NULL。 3.1.3 窗口處理函數(shù)Windows 系統(tǒng)是消息(Message)驅(qū)動的。消息在 Windows 處理用戶交互的過程中具有重要作用。當(dāng)用戶操作輸入設(shè)備,產(chǎn)生硬件中斷后,系統(tǒng)內(nèi)核會得到這此硬件中斷,硬件在系統(tǒng)中經(jīng)過復(fù)雜的運(yùn)算和處理最終變成消息。消息被系統(tǒng)發(fā)送給指定窗口。 所有的對用戶界面的操作都會產(chǎn)生消息,包括鼠標(biāo)單擊、按鈕、菜單選擇
12、、窗口創(chuàng)建窗口移動等。Windows 消息種類很多。 在創(chuàng)建窗口時,需指定窗口所屬的窗口類,前面提到,每一個窗口類都對應(yīng)一個消息處理函數(shù),因此每一個窗口都具有自己的消息處理函數(shù)。程序員在開發(fā)窗口應(yīng)用程序時,需編寫窗口消息處理函數(shù)。消息處理函數(shù)是一個回調(diào)( Call Back)函數(shù)。此函數(shù)并不是由應(yīng)用程序調(diào)用,而是由系統(tǒng)調(diào)用的。應(yīng)用程序向系統(tǒng)注冊了窗口類,創(chuàng)建了窗口,系統(tǒng)在消息產(chǎn)生后,需要窗口消息處理函數(shù)來處理時,調(diào)用窗口所對應(yīng)的消息處理函數(shù)。 消息處理函數(shù)的功能一般是相應(yīng)用戶在窗口上的操作和輸入。比如用戶在菜單中選中了一個菜單項(xiàng),那么就會產(chǎn)生一個消息。然后,窗口的消息處理函數(shù)就會被調(diào)用。消息處
13、理函數(shù)被調(diào)用后根據(jù)消息的類型和參數(shù)判斷應(yīng)該如何處理用戶的輸入,然后進(jìn)行相關(guān)的處理。窗口處理函數(shù) 消息處理函數(shù)是一個回調(diào)函數(shù),是注冊窗口類時指定(通過函數(shù)指針賦值給 WNDCLASS 結(jié)構(gòu)或 WNDCLASSEX 結(jié)構(gòu)的 lpfnWndProc成員來指定消息處理函數(shù)),在有消息需要處理時由系統(tǒng)調(diào)用。 LRESULT CALLBACK WindowProc ( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM IParam ); hwnd:指向窗口的句柄。 uMsg:指定消息類型。 wParam:指定其余的、消息特定的信息。該參數(shù)的內(nèi)容與UMsg參數(shù)值有關(guān)。
14、IParam:指定其余的、消息特定的信息。該參數(shù)的內(nèi)容與uMsg參數(shù)值有關(guān)。 返回值:返回值就是消息處理結(jié)果,它與發(fā)送的消息有關(guān)。 回調(diào)函數(shù)的函數(shù)名任意,但是調(diào)用類型、返回值類型、參數(shù)類型和順序必須固定,以使系統(tǒng)可以正常調(diào)用消息處理函數(shù)。窗口消息處理重要消息 (1) WM NOTIFY。 當(dāng)一個窗口的子窗口被用戶操作時,該子窗口會向父窗口發(fā)送 WM NOTIFY 通知(2) WMDESTROY。 收到WMDESTROY 消息,表示用戶單擊窗口的關(guān)閉按鈕。如果用戶單擊主窗口的關(guān)閉按鍵,一般情況下表示用戶需要結(jié)束本程序的運(yùn)行。因此在 MainWndProc 函數(shù)收到WM_DESTROY 消息后,調(diào)
15、用 PostQuitMessage 函數(shù)退出程序運(yùn)行。要退出一個進(jìn)程的運(yùn)行,也可以調(diào)用 ExitProcess函數(shù)。 (3) WM_COMMAND。 收到 WM_COMMAND -般是因?yàn)橛脩敉ㄟ^菜單、按鈕等用程序輸入命令。WM_COMMAND 消息的 wP aram的低位 WORD是表示用戶單擊的控件或菜單項(xiàng)的 ID3.2 DLL如圖在VC+中 新建一個Win32 Dynamic - Link Library 工程DLL簡介:動態(tài)鏈接庫英文為DLL,是Dynamic Link Library 的縮寫形式,DLL是一個包含可由多個程序同時使用的代碼和數(shù)據(jù)的庫,DLL不是可執(zhí)行文件。動態(tài)鏈接提供
16、了一種方法,使進(jìn)程可以調(diào)用不屬于其可執(zhí)行代碼的函數(shù)。函數(shù)的可執(zhí)行代碼位于一個 DLL 中,該 DLL 包含一個或多個已被編譯、鏈接并與使用它們的進(jìn)程分開存儲的函數(shù)。DLL 還有助于共享數(shù)據(jù)和資源。多個應(yīng)用程序可同時訪問內(nèi)存中單個DLL 副本的內(nèi)容。DLL 是一個包含可由多個程序同時使用的代碼和數(shù)據(jù)的庫。導(dǎo)出 DLL 函數(shù)方法一、向?qū)С龅?DLL 函數(shù)中添加函數(shù)關(guān)鍵字 要使用函數(shù)關(guān)鍵字,您必須使用以下關(guān)鍵字來聲明要導(dǎo)出的各個函數(shù): _declspec(dllexport) 要在應(yīng)用程序中使用導(dǎo)出的 DLL 函數(shù),您必須使用以下關(guān)鍵字來聲明要導(dǎo)入的各個函數(shù): _declspec(dllimport
17、) 通常下,您最好使用一個包含 define 語句和 ifdef 語句的頭文件,以便分隔導(dǎo)出語句和導(dǎo)入語句。 方法二、創(chuàng)建模塊定義文件 (.def) 以列出導(dǎo)出的 DLL 函數(shù) 使用模塊定義文件來聲明 導(dǎo)出的 DLL 函數(shù)。當(dāng)您使用模塊定義文件時,您不必向?qū)С龅?DLL 函數(shù)中添加函數(shù)關(guān)鍵字。在模塊定義文件中,您可以聲明 DLL 的 LIBRARY 語句和 EXPORTS 語句。DLL應(yīng)用原理首先,語句typedef int (* lpAddFun)(int ,int)定義了一個與add函數(shù)接收參數(shù)類型和返回值 均相同的函數(shù)指針類型。隨后,在main 函數(shù)中定義了lpAddFun的實(shí)例addF
18、un;其次,在函數(shù)main 中定義了一個DLL HINSTANCE 句柄實(shí)例hDll,通過Win32 API 函數(shù) LoadLibrary 動態(tài)加載了DLL 模塊并將DLL 模塊句柄賦給了hDll ;在次,在函數(shù)main中Win32API 函數(shù)GetprocAddress得到了所加載DLL模塊中add的地址 并付給了addFun.經(jīng)由函數(shù)指針addFun進(jìn)行了對DLL中add函數(shù)的調(diào)用。最后,應(yīng)用工程使用完DLL后,在函數(shù)main中通過Win32API 函數(shù)FreeLibrary釋放已經(jīng) 加載的DLL模塊。四 源碼<1>DLL部分#include<windows.h>#
19、include<math.h>#ifndef LIB_H#define LIB_Hextern "C" void _declspec(dllexport)setCalculate(HWND hwnd,HWND hwnd1,HWND hwnd2,HWND hwnd3,HWND hwnd4);extern "C" void _declspec(dllexport)setClearAll(HWND hwnd1,HWND hwnd2,HWND hwnd3,HWND hwnd4);#endif#include"event.h"cha
20、r Money = ""char Rate = ""char Year = ""char Total = ""/*+ + + *主函數(shù):Check + + *功能: 輸入判斷函數(shù) + *參數(shù): a 輸入的字符串 + *返回值:全是數(shù)字返回TRUE 否則返回FALSE + + + +*/BOOL Check(char a) int i;int len = strlen(a);for(i=0;i<len;i+)if(ai>'9'|ai<'0')return FALSE;
21、return TRUE;/*+ + *主函數(shù):setCalculate + + *功能: 為CalculateButton添加響應(yīng) + 輸入本金,利率,年 輸出總錢數(shù) + *參數(shù): hwnd 父窗口句柄 + hwnd1 本金輸入框句柄 +hwnd2 利率輸入框句柄 +hwnd3 年數(shù)輸入框句柄 + +hwnd4 輸出框句柄 + *返回值: + +*/void setCalculate(HWND hwnd,HWND hwnd1,HWND hwnd2,HWND hwnd3,HWND hwnd4)GetWindowText(hwnd1,Money,20); GetWindowText(hwnd2,R
22、ate,20);GetWindowText(hwnd3,Year,20); double totalMoney;if(Check(Money)&&Check(Rate)&&Check(Year)totalMoney = atof(Money)*pow(1/atof(Rate)+1,atoi(Year);gcvt(totalMoney,10,Total);SetWindowText(hwnd4,Total);elseMessageBox(hwnd,TEXT("對不起,你輸入的格式不對"),TEXT("提示"),MB_OK);
23、SetWindowText(hwnd1,"");SetWindowText(hwnd2,"");SetWindowText(hwnd3,"");SetWindowText(hwnd4,"");/*+ + *主函數(shù):setClearAll + + *功能: 為ClearButton添加響應(yīng) + 清空所有輸入框輸出框 + *參數(shù): hwnd1 本金輸入框句柄 +hwnd2 利率輸入框句柄 +hwnd3 年數(shù)輸入框句柄 + +hwnd4 輸出框句柄 + *返回值: + +*/void setClearAll(HWND h
24、wnd1,HWND hwnd2,HWND hwnd3,HWND hwnd4)SetWindowText(hwnd1,"");SetWindowText(hwnd2,"");SetWindowText(hwnd3,"");SetWindowText(hwnd4,"");<2>窗口部分/windows程序的頭文件#include<windows.h>extern char szTitle; /標(biāo)題條字符串extern char szWindowClass; /窗口類名extern char sz
25、MenuName ; extern int ID,ID_1;/函數(shù)原型聲明ATOM InitApplication(HINSTANCE); /用來注冊窗口類BOOL InitInstance(HINSTANCE , int); /用來創(chuàng)建主窗口LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM); /消息處理函數(shù)int APIENTRY WinMain( HINSTANCE , HINSTANCE , LPSTR , int); /主函數(shù)BOOL CreateControl(HINSTANCE,HWND, LPSTR); /創(chuàng)建文本框 #i
26、nclude "window.h"#include<math.h>/全局變量char szTitle = "Windows通信機(jī)制和DLL機(jī)制" /標(biāo)題條字符串Char szWindowClass = "w32" /窗口類名Char szMenuName ="NULL" /菜單名typedef void (*lpsetCalculateFun)(HWND ,HWND ,HWND ,HWND ,HWND);typedef void (*lpsetClearAllFun)(HWND ,HWND ,HWND
27、,HWND);HWND hwnd1,hwnd2,hwnd3,hwnd4,calculateButton,clearButton;HWND hwnd; /*+ + *主函數(shù) WinMain + *功能: 初始化及注冊窗口類,創(chuàng)建窗口,進(jìn)入消息循環(huán)及終止應(yīng)用程序 + *參數(shù): hInstance 當(dāng)前實(shí)例 + hPrevInstance 前一個實(shí)例 + + lpCmdLine 命令行 + + nCmdShow 選擇顯示窗口或圖標(biāo) + *返回值:msg.wParam +*/int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstanc
28、e , LPSTR lpCmdLine , int nCmdShow )MSG msg; /聲明消息結(jié)構(gòu)對象InitApplication( hInstance ); /注冊窗口if( !InitInstance( hInstance, nCmdShow ) ) /初始化return FALSE;while ( GetMessage(&msg, (HWND) NULL, 0, 0) ) /消息循環(huán)TranslateMessage(&msg); /檢索消息 DispatchMessage(&msg); /將消息間接傳給函數(shù)指針return msg.wParam; /結(jié)束消
29、息循環(huán)傳回PostQuitMesage /*+ + *主函數(shù):InitApplication + + *功能: 用來注冊窗口類 + *參數(shù): hInstance 當(dāng)前實(shí)例 + *返回值:如果成功,返回一個唯一的整數(shù),如果失敗,返回0 + + */ATOM InitApplication(HINSTANCE hInstance)WNDCLASS wc; /聲明窗口結(jié)構(gòu)對象/初始化對象的域值wc.style = CS_HREDRAWCS_VREDRAW; / 如果大小改變了重繪窗口 wc.lpfnWndProc = WndProc; /窗口消息處理函數(shù)wc.cbClsExtra = 0; / 無附
30、加窗口類內(nèi)存 wc.cbWndExtra = 0; / 無附加窗口內(nèi)存wc.hInstance = hInstance; /當(dāng)前實(shí)例wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); / 圖標(biāo)wc.hCursor = LoadCursor(NULL, IDC_ARROW); / 鼠標(biāo)指針wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); / 背景畫刷wc.lpszClassName = szWindowClass; / 窗口類名wc.lpszMenuName = szMenuName; /菜單名Retu
31、rn RegisterClass(&wc); /注冊/*+ + *主函數(shù):InitInstance + + *功能: 用來創(chuàng)建主窗口 + *參數(shù): hInstance 當(dāng)前實(shí)例 + nCmdShow 選擇顯示窗口或圖標(biāo) + *返回值:如果成功,返回一個非零值,如果失敗,返回0 + +*/BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) /聲明窗口句柄hwnd = CreateWindow(szWindowClass, / 窗口類名,使用之前注冊的主窗口類szTitle, / 窗口名,顯示在窗口標(biāo)題欄上的字符串WS_OVERLAPP
32、EDWINDOW |WS_VSCROLL|WS_HSCROLL, /顯示方式 具有水平和垂直滾動CW_USEDEFAULT, / x起點(diǎn)坐標(biāo)CW_USEDEFAULT, / y起點(diǎn)坐標(biāo)400, / 寬300, / 高NULL, / 無父窗口NULL, / 菜單句柄hInstance, /實(shí)例句柄NULL / 無窗口創(chuàng)建數(shù)據(jù));if(!hwnd) / 判斷是否創(chuàng)建成功return FALSE; CreateControl( hInstance, hwnd, NULL);ShowWindow(hwnd, nCmdShow); /創(chuàng)建成功便顯示窗口UpdateWindow(hwnd); /送出WM_
33、PAINT消息return TRUE;/*+ + *主函數(shù):CreateControl + + *功能: 創(chuàng)建文本框 + *參數(shù): hwndp 父窗口句柄 + szTitle 窗口標(biāo)題 + *返回值: + +*/BOOL CreateControl(HINSTANCE hInstance, HWND hwndp, LPSTR szTitle)hwnd1=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER, 50, 40,100, 20, hwndp, NULL,hInstance, NULL);calculateBu
34、tton = CreateWindow( "BUTTON","計算", WS_CHILD |WS_VISIBLE|WS_BORDER, 180, 40,60, 20, hwndp, NULL,hInstance, NULL);clearButton = CreateWindow( "BUTTON","清除", WS_CHILD |WS_VISIBLE|WS_BORDER, 180, 70,60, 20, hwndp, NULL,hInstance, NULL); hwnd2 = CreateWindow( "edit",NULL, WS_CHILD |WS_VISIBLE|WS_BORDER, 50, 70,100, 20, hwndp, NULL,hInstance, NULL);hwnd3 = CreateWindow( "edit",NULL, WS_CHILD |WS_VISIBLE|WS_BORDER, 50, 100,100, 20, hwndp, NULL,hInstance, NULL); hwnd4 = CreateWindow( &q
溫馨提示
- 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-2030大米產(chǎn)品入市調(diào)查研究報告
- 2025-2030多井鉆探墊行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030聲發(fā)射無損檢測行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030塑料花市場投資前景分析及供需格局研究研究報告
- 2025-2030地板產(chǎn)業(yè)行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 保證質(zhì)押合同樣本
- 2025-2030國內(nèi)益生菌行業(yè)深度分析及競爭格局與發(fā)展前景預(yù)測研究報告
- 2025-2030雙點(diǎn)膠技術(shù)行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030廁所清潔粉行業(yè)市場發(fā)展分析及發(fā)展趨勢前景預(yù)測報告
- 2025-2030化肥行業(yè)投資機(jī)會及風(fēng)險投資運(yùn)作模式研究報告
- 大模型原理與技術(shù)-課件 chap6 大模型微調(diào)
- 政府采購評審專家考試題庫(完整版)
- 公路工程中漿砌塊石擋土墻施工方案
- 零星工程維修 投標(biāo)方案(技術(shù)方案)
- 支氣管哮喘治療
- 鋼棚搭建安全合同(2篇)
- 《公路橋梁掛籃設(shè)計與施工技術(shù)指南》
- DB35T 1964-2021 森林撫育技術(shù)規(guī)程
- 浙江省【高等職業(yè)技術(shù)教育招生考試】-商業(yè)類(電子商務(wù))-職業(yè)技能理論知識(一)(答案版)
- 人教版歷史2024年第二學(xué)期期末考試七年級歷史試卷(含答案)
- 中班故事活動《小馬過河》 課件
評論
0/150
提交評論