Windows SDK
C語言
Windows SDK是微軟每推出一個重要的windows版本,一般都會同時推出一個SDK(Software Development Kit)。SDK包含了開發該windows版本所需的windows函數和常數定義、API函數說明文檔、相關工具和示例。SDK一般使用C語言,但不包括編譯器。
高版本VC++包括了SDK所有的頭文件、幫助、示例和工具,不需要再安裝SDK,低版本如VC++5.0則需要安裝SDK。從windows 98開始,windows SDK叫Platform SDK(http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en),包含最新的windows API函數的有關聲明、例子。
用VC編寫windows程序有兩種方式:windows c方式(SDK)和C++方式(對SDK函數進行包裝,如VC中的MFC、BCB中的VCL)。SDK編程就是直接用windows API進行編程。API由上千個API函數組成(win95中有兩千多個),而MFC是API的封裝,結合面向對象的繼承、多態組成一個個類,共有一百多個類組成。
SDK是Software Development Kit的縮寫,中文意思是“軟體開發工具包”。這是一個覆蓋面相當廣泛的名詞,可以這麼說:輔助開發某一類軟體的相關文檔、範例和工具的集合都可以叫做“SDK”。開發 Windows 平台下的應用程序所使用的 SDK只是廣義 SDK 的一個子集。
上面只是說了一個 SDK 大概的概念而已,要理解SDK 不得不引入 API、動態鏈接庫、導入庫等等概念。
首先要接觸的是“ API”,也就是 Application Programming Interface,其實就是操作系統留給應用程序的一個調用介面,應用程序通過調用操作系統的 API 而使操作系統去執行應用程序的命令(動作)。早在 DOS 時代就有 API 的概念,只不過那個時候的 API 是以中斷調用的形式(INT 21h)提供的,在 DOS 下跑的應用程序都直接或間接的通過中斷調用來使用操作系統功能,比如將 AH 置為 30h 后調用 INT 21h 就可以得到 DOS 操作系統的版本號。而在 Windows 中,系統 API 是以函數調用的方式提供的。同樣是取得操作系統的版本號,在 Windows 中你所要做的就是調用 GetVersionEx() 函數。可以這麼說,DOS API 是“Thinking in 彙編語言”的,而 Windows API 則是“Thinking in 高級語言”的。DOS API 是系統程序的一部分,他們與系統一同被載入內存並且可以通過中斷矢量表找到他們的入口。
DLL即 Dynamic Link Library(動態鏈接庫)。我們經常會看到一些 .dll 格式的文件,這些文件就是動態鏈接庫文件,其實也是一種可執行文件格式。跟 .exe 文件不同的是,.dll 文件不能直接執行,他們通常由 .exe 在執行時裝入,內含有一些資源以及可執行代碼等。其實 Windows 的三大模塊就是以 DLL 的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),裡面就含有了 API 函數的執行代碼。為了使用 DLL 中的 API 函數,我們必須要有 API 函數的聲明(.H)和其導入庫(.LIB)。導入庫可以理解為是為了在 DLL 中找到 API 的入口點而使用的。
所以,為了使用 API 函數,我們就要有跟 API 所對應的 .H 和 .LIB 文件,而 SDK 正是提供了一整套開發 Windows 應用程序所需的相關文件、範例和工具的“工具包”。
由於 SDK 包含了使用 API 的必需資料,所以人們也常把僅使用 API 來編寫 Windows 應用程序的開發方式叫做“SDK 編程”。而 API 和 SDK 是開發 Windows 應用程序所必需的東西,所以其它編程框架和類庫都是建立在它們之上的,比如 VCL 和 MFC,雖然他們比起“SDK 編程”來有著更高的抽象度,但這絲毫不妨礙它們在需要的時候隨時直接調用 API 函數。
時下學計算機的大多想學編程,且大部分都是在Windows下工作的,而目前學得最熱門的是VC,大多數人一開始就開始學習VC,VC是以C++為語言基礎的開發工具,而C++是C語言的擴充,故要學好VC最好是先學好C和C++。
用VC編寫Windows程序有兩種:1. Windows c方式(SDK),2. C++方式:即對SDK函數進行包裝,如VC的MFC,BCB的VCL等。SDK編程就是直接調用Windows的API進行編程,平時人們常說"用SDK寫程序"就是指用Windows的API函數來寫程序,API由上千個API函數組成(Win95的API有兩千多個)。而MFC是API的封裝,結合面向對象程序設計的繼承性和多態性組成一個個的"類",共由一百多個類組成。儘管MFC比SDK方便,但要深入VC,直接去學MFC卻是不明智的選擇。只有在熟悉了MFC的運行機制的情況下,才有可能深入下去。所以學VC最好是先學用SDK編寫程序,在此期間掌握Windows操作系統的工作原理和各API函數的應用,然後再深入MFC。
我們仍然用VC6的IDE(集成開發環境)來編寫SDK程序,啟動VC6后選擇File菜單的New...選項,在出現的New對話框的Projects標籤內選擇Win32 Application,然後在Projects Name指定項目的名字,在Location中指定路徑后按OK按鈕,在出現的對話框中,如果你想要用C語言來寫程序可以選擇An emtpy project,如果你想創建一個帶有WinMain入口函數和普通參數的設定的項目,可以選擇A simple Win32 application,如果您想創建一個簡單典型的“Hello World!”Win32SDK application應用程序,可以選擇A typical "Hello World!" application。確定項目類型后按Finish完成。