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