01 對windows程序設計的基礎認識



1:【消息】是一個典型的面向對象的詞彙,【給某個對象過程發送消息】與【調用某個對象的某個公有成員函數】,是等價的。說的直白一點,某個對象有一個叫fun的成員函數,調用fun(some paramemter)函數,這是面向過程的說法。在面向對象的說法裏,叫做,給fun()函數發送了some parameter消息

2:在windows程序設計中,要始終明確,你所編寫的代碼,並不是一個獨立的、可運行的程序,你的代碼,加上windows本身,纔是一個可運行的過程。你所編寫的代碼,描述的是【對爲了完成某種任務而需要與操作系統交互的過程的描述】,你的代碼其實描述的是一個過程,是一個與windows交互、有些包括與用戶交互的過程,通過這個過程,你能實現某種功能

3:程序設計語言本身並不具有操縱硬件的能力,都要藉助於操作系統,也就是說,我們用C語言寫的Hello World控制檯應用程序,也是藉助了操作系統的。
操作系統管理計算機的所有資源,包括所有硬件,程序的計算、輸出顯示等功能,都要藉助於操作系統來實現。那麼程序設計語言與操作系統之間是怎麼聯繫的呢?操作系統管理硬件,提供給你編程接口,其實就是程序設計語言中的函數,你通過調用基於操作系統的函數,或者叫做給這些函數發送消息,來指揮操作系統,讓操作系統來完成你需要的功能與實現。這種基於操作系統的函數,叫做操作系統API。C語言的標準printf()函數,在所有操作系統與支持C的硬件上都能實現,並不是說這些printf()是一樣的,不是這樣的,不同的操作系統管理硬件的方式是不一樣的,不同的顯示器有不同的特性,只是在所有的C語言的編譯環境與硬件環境下,所有的printf()運行的結果是一致的。無論使用windows VC下的printf(),還是Linux gcc下的printf(),無論使用一臺386黑白屏幕電腦,還是神舟筆記本,還是MAC,無論你的屏幕是17寸的,21寸的,還是27寸的,其執行結果是一致的,但是其執行過程,是不一樣的。
基於windows下的vc編譯器的printf()函數,與Linux或其他操作系統下基於gcc的printf()函數,細節上是不一樣的。不同顯示器的電腦,其printf()的運行過程也是不同的。其實再細分一點,顯示器由顯卡管理,顯卡由不同操作系統下的驅動程序管理,操作系統將顯卡驅動程序所提供的API封裝成操作系統自己的API,程序設計語言與其編譯器再將操作系統的API再進行一次封裝,這樣,呈現在程序員面前的就是C語言的printf(),而至於printf()函數通過什麼樣的過程最終驅動顯示器顯示內容,這其中的過程對程序員是透明的。
而我們學習windows程序設計,不能只侷限於程序設計語言層面,因爲在這個層面沒有一個程序設計語言將windows窗口應用程序的API封裝到語言本身的特性中去,所以我們要再深入一層,瞭解到windows API層面上,你需要了解如何通過C語言給windows API發送消息,來驅動硬件運動,程序運行。這才能算是學習windows程序設計。
所以說,學習windows程序設計,學習的並不光是程序設計,更重要的是,學習windows操作系統公開給我們的API,以及瞭解理解消息與這些API函數如何互動,這纔是學習windows程序設計的關鍵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章