知道Windows SDK是什么嗎?
你也許了解微軟。了解比爾蓋茨,你是Windows的老用戶。不過Windows中的很多功能也許你不能完全掌握吧。你是否了解什么是Windows SDK?Windows SDK是什么?
SDK即software develope kit(軟件開發工具包),它包含了進行Windows軟件開發的文檔和API函數的輸入庫、頭文件(因為API在動態鏈接庫中,這些動態鏈接庫是系統的組成部分因此不用再提供,而輸入庫和頭文件則必須,這樣才能在你的程序中使用API函數)。早期SDK是一個單獨發放的包,現在在Visual C++和其他一些開發環境中已經包含了它。如果你已經安裝了VC++那么就可以開始編寫Windows程序了。隨著Windows系統的發展,SDK的內容越來越多,我們只要抓住最基本的方面。至于其他專門的主題,就根據自己的興趣和技術方向進一步學習了。
第一個Windows程序
如果你已經開始,你的教材應該是那本經典的programming windows (petzold)或者是一本相似的書。但無論哪本書,一開始你都會面對一個基本的Windows SDK程序,這個程序有幾十行。盡管也不算長,但比C版的hello world長多了。更糟的是,里面充斥著奇怪的變量類型和常量定義,不過先不用被它嚇住,讓我們看看這里面有些什么。首先會有一個#include <windows.h> ,嗯,沒什么奇怪的,這和#inclde <stdio.h>沒什么兩樣。然后是一個函數聲明:LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; 有點困惑了,一下子就出來了好幾個“生詞”,而且函數名前面有兩個修飾符也是以前沒有遇到的。好在我們還可以辨認出這是一個函數聲明。再往下看是WinMain函數,又是一堆生詞,我猜想你可能已經開始郁悶了。想一遍看懂這個程序確實困難,所以看不懂也沒關系??床幌氯チ丝梢钥纯磿系闹v解。這篇文章并不是要完整分析這個程序的,hfire不可能有petzold講的好。在這里hfire幫你分析一下一些陌生的東西。
首先說Windows的數據類型。盡管這些數據類型看上去很陌生,其實它們是由C的基本數據類型define的。比如UINT就是unsinged int,PSTR就是pointer to string 的意思,猜猜就知道是char * 。Windows還有很多系統定義的結構體,比如WNDCLASS,MSG等,這些東西見的多了就自然明白了。Windows還有一個重要的概念,句柄。通過句柄就可以操作Windows對象。HWND,HINSTANCE,HDC等都是句柄。
再說說Windows程序的結構。一般有一個WinMain函數作為程序的入口點,在WinMain里面定義窗口類,進行消息循環。消息循環就是那個普通的while循環,在其中接收消息、分發消息。然后是窗口函數WndProc,名字可以自己定。在其中用一個大的switch結構檢索消息,在每個case下面寫處理消息的代碼。最簡單的Windows SDK程序只要寫這兩個函數就夠了。等你的程序寫長了,就要把特定的消息處理代碼寫成函數,以便在處理消息時調用,甚至你可以使用C++來寫程序。等你熟悉這種結構以后,就可以任意發揮了。
幾種Windows編程方法的辨析
很多初學者往往會將Windows編程和VC++混為一談。打開VC++的新建項目,可以看到VC++支持很多種工程。包括命令行的,MFC的,還有就是Win32 Application,即SDK程序。使用VC++未必是編寫SDK程序,編寫SDK程序也未必要用VC++。 編寫Windows程序的方法也不止SDK一種,還包括使用類庫如MFC,OWL,使用快速開發工具如VB,Delphi。這些方法各有各的用處。使用SDK無疑是最麻煩的了,我們學習SDK也并非是為了用它來編軟件,雖然它可以,主要是為了對Windows編程有比較清晰的認識,這樣你使用MFC時就可以做到“胸中自有溝壑”。
通過本文你就全面了解了Windows SDK了吧。
【編輯推薦】