在C語言中,使用fopen()函數(shù)可以打開一個(gè)文件,感覺非常簡(jiǎn)單。文件保存在硬盤上,要經(jīng)過復(fù)雜的處理才能顯示,這些細(xì)節(jié)對(duì)我們來說是透明的,由操作系統(tǒng)完成。也就是說,我們調(diào)用fopen()函數(shù)來通知操作系統(tǒng),讓操作系統(tǒng)打開一個(gè)文件。 那么,我們?nèi)绾胃嬖V操作系統(tǒng)打開文件呢? 看似簡(jiǎn)單的操作到底層都非常復(fù)雜,打開文件首先要掃描硬盤,找到文件的位置,然后從文件中讀取一部分?jǐn)?shù)據(jù),將數(shù)據(jù)放進(jìn)I/O緩沖區(qū),放進(jìn)內(nèi)存;這些數(shù)據(jù)都是0、1序列,還要對(duì)照ASCII表或Unicode表”翻譯“成字符,再在顯示器上顯示出來。這個(gè)過程如果要讓程序員來完成,那簡(jiǎn)直是噩夢(mèng)! 怎么辦呢?Windows想了一個(gè)很好的辦法,它預(yù)先把這些復(fù)雜的操作寫在一個(gè)函數(shù)里面,編譯成動(dòng)態(tài)鏈接庫(kù)(DLL),隨Windows一起發(fā)布,程序員只需要簡(jiǎn)單地調(diào)用這些函數(shù)就可以完成復(fù)雜的工作,讓編程變得簡(jiǎn)單有趣。 這些封裝好的函數(shù),叫做 API(Application Programming Interface),即應(yīng)用程序編程接口。 API 函數(shù)以C語言的形式向外暴露,可以通過C語言直接調(diào)用。 除了函數(shù),Windows 還預(yù)先定義了很多數(shù)據(jù)類型(使用C語言的 typedef 關(guān)鍵字定義)。廣義上來說,這些數(shù)據(jù)類型也是 API 的一部分。 API 屏蔽了很多細(xì)節(jié),大大簡(jiǎn)化了程序員的工作,這就是操作系統(tǒng)的威力,不但讓普通用戶使用方便,也讓程序員如釋重負(fù)。 在Windows上運(yùn)行的程序(包括MS-DOS程序),本質(zhì)上都是通過調(diào)用Windows API來完成功能的,包括QQ、360、VC6.0等,別看這些團(tuán)隊(duì)牛,也不可能從底層做起,那簡(jiǎn)直不可想象。 C語言也一樣,也是調(diào)用Windows API,fopen() 函數(shù)就是通過調(diào)用 CreateFile() 函數(shù)實(shí)現(xiàn)的。CreateFile() 是Windows API中的一個(gè)函數(shù),可以用來打開或創(chuàng)建文件。 通常所說的 SDK 編程就是直接調(diào)用API 函數(shù)進(jìn)行編程。SDK 是 Software Development Kit 的縮寫,即軟件開發(fā)工具包。 Windows API 函數(shù)成千上萬,詳細(xì)了解每一個(gè)函數(shù)的用法是不可能的,也是完全沒有必要的。只需知道哪些功能由哪些API 函數(shù)提供就行了,等使用它們時(shí)再去查閱幫助文件。 帶界面的程序的專業(yè)稱呼是GUI程序。GUI 是 Graphical User Interface 的簡(jiǎn)寫,即圖形用戶界面。本教程將教你使用 Windows API 來編寫GUI程序,編程語言為C語言。 |
|