1.1、Windows的介紹
Windows是一種基於圖形界面的多任務操作系統。為這個環境開發的程序有著相同的外觀和命令結構。對用戶 來說,這使得學習使用Windows應用程序變得容易了。為了幫助開發Windows應用程序,Windows提供了大量的內建 函數以方便地使用彈出菜單、滾動條、對話框、圖標和其他一些友好的用戶界面應該具有的特性。
Windows運行應用程序以硬件無關的方式來處理視頻顯示、鍵盤、鼠標、打印機、串行口以及系統時鐘。最值 得注意的Windows特性就是其標准化的圖形用戶界面。統一的界面使用圖片或圖標來代表磁盤驅動器、文件、子目 錄以及其它操作系統的命令和動作。統一的用戶界面也為程序員帶來了好處。例如,你可以很方便地使用常見菜單和對話框的內建函數。所有的菜單都具有相同風格的鍵盤和鼠標接口,因為是Windows而不是程序員在實現它。
Windows的多任務環境允許用戶在同一時刻運行多個應用程序或同一個應用程序的多個實例。一個應用程序可 能處於激活狀態。激活的應用程序是指它正接收用戶的輸入。因為每一個瞬間僅有一個程序能夠被處理,因此同一時間也只能有一個應用程序處於激活狀態。但是,可以有任意個數的並行運行的任務。
1.2、Windows的簡要歷史
Windows最初由Microsoft公司在1983年11月宣布,1985年11月推出了第一公開發行版本,即1.01版。此後兩年,1.01版進行了幾次修改以滿足國際市場的需求,並增減了一些顯示器和打印機的驅動程序。1987年11月發行的Windows 2.0版在用戶界面上做了些改進。例如:重疊式窗口的引入,還增強了鍵盤和鼠標接口,特別是增強了選單和對話框的功能...(略)
1.3、用戶界面的構件
1.3.1 窗口
窗口是屏幕上與一個應用程序相關的矩形區域,它是用戶與產生該窗口的應用程序之間的可視界面。對應用程序來說,窗口是應用程序控制下的屏幕上的一個矩形區域,應用程序創建並控制窗口的所有方面。當用戶啟動一個應用程序時,一個窗口就被創建。每當用戶操作窗口中的對象時,程序就有所響應。
1.3.2 邊框
絕大多數窗口都有一個環繞著它的邊框,邊框不僅作為窗口的邊界,它也用來指明窗口的狀態,即窗口是否是一個活動窗口。當我們將鼠標指針放在邊框上按下鼠標鍵並移動鼠標時,就可以改變窗口的大小。
1.3.3 標題欄
標題欄位於窗口的頂部,其中顯示的文本信息用於標注程序,一般是應用程序的名字,這便於用戶知道哪個應用程序正在運行。標題欄的顏色反映一個窗口是否是一個活動窗口。
1.3.4 控制框
控制框是每個窗口左上方的小圖片,每個應用程序都使用它。在控制圖標上單擊鼠標鍵會使Windows顯示系統菜單。系統菜單它提供了諸如還原、移動、大小、最小化、最大化以及關閉這樣的標准操作。
1.3.5 最小化圖標
每個Windows 98及Windows NT應用程序都在窗口的右上角顯示三個圖標。最左邊的圖標是一段短下劃線,這就是最小化圖標。它可以使用程序被最小化。
1.3.6 最大化圖標
最大化圖標是三個圖標中中間的那一個,看起來象兩個小窗口。使用最大化圖標可以使用應用程序占滿整個屏幕。如果選擇了這個圖標,其它應用程序窗口都會被蓋住。
1.3.7 垂直滾動條
如果有必要,應用程序可以顯示一個垂直滾動條。垂直流動條顯示在應用程序窗口的右邊,在兩端有兩個方向相反的箭頭。它還有一個著色的棒和一個透明的窗口塊。後者被用於顯示當前顯示內容與整個文檔的關系。你可以用滾動條來選擇顯示哪一頁。一般在任何一個箭頭上單擊一下會使顯示內容移動一行。單擊向上箭頭下方的窗口塊並拖動它會使屏幕輸出快速更新到應用程序屏幕輸出的任意位置。
1.3.8 水平滾動條
也可以顯示一個水平滾動條 。水平滾動條顯示在窗口的底部,具有與垂直滾動條類似的功能。你用它來選擇 要顯示哪些列。一般在任何一個箭頭上單擊一個會使顯示內容移動一列。單擊向左箭頭右邊的窗口塊並拖動它會使屏幕輸出快速更新到應用程序屏幕輸出的任意位置。
1.3.9 選單欄
一個可選擇的菜單條可以顯示在標題條的下方。通過菜單條來選擇菜單和子菜單。這種選擇可以通過用鼠標單擊,也可以用熱鍵組合來實現。熱鍵組合經常是ALT與命令中帶下劃線的字母的組合,比如File命令中的 “F”。
1.3.10 用戶區
通常用戶區占據了窗口最大的部分。這是應用程序的基本輸出區域。應當由應用程序來復雜管理用戶區。另外,應用程序可以輸出到用戶區。
1.4、面向對象的思維方法
對於程序員來說,面向對象意味著非常熟悉的事物:將世界看成是一組彼此相關並相互通信的實體即對象組成,每個對象有一個名字來標識,這是人們通常看待世界的方式。例如,當看見一輛汽車時,所見到的是一輛汽車,而不是一大堆原子。人們可以將汽車分解為車輪、發動機、車門、油箱等,它們都是具體的實體即對象。
對象之間的通信被稱為發送消息,即一個對象請求另一個對象執行某種方式的操作。例如,交叉路口的紅燈“請求”駕駛員停車,駕駛員在接受到消息之後,他所執行的動作是踏下制動踏板,這有向汽車發送了一條消息,汽車在接受到此消息之後,又將該消息分解之後發送到相關的對象上:制動器作用於車輪上,將動能轉變成為勢能,使車速降下來;尾燈又向它後面的其它車輛的駕駛員發送消息;各種儀表盤向駕駛員反饋出所發送的消息的動作結果。
從程序員角度而言,對象是內存中一塊有名的存儲單元。我們通常所謂的變量就是一種數據對象,但對象的概念比變量的含義更廣義,通常將對象定義成為包含有數據和代碼的內存區域,數據表征對象的特征,而代碼用於響應消息,使對象進行某些動作。從屏幕上顯示的一個可視的窗口對象為例,我們可以對比分析一下用戶心目中的對象和程序員心目中的對象的關系。窗口對象的特征,例如顏色、長度、其中顯示的信息等,在程序中被表示為數據,用戶對窗口對所做的操作,例如移動窗口、改變窗口的大小等,使得用戶向窗口發送了消息,這些消息引起了計算機(內存中的)對象執行相應的代碼,代碼執行的結果改變了對象中的數據,使對應的可以視對象 的位置和大小發生了變化。
對象為響應消息所執行的代碼被稱為方法,對象中保存的數據構成對象的屬性,對象的抽象定義就是執行某些動作,否則,沒有其它途徑可以使一個對象動作起來。向一個對象發送消息在程序中表示為:
functionName(id, arg1, arg2, ...);
其中,消息是functionName,id是標識對象的一個對象名,或稱其為對象的標識符,Windows使用某種類型的 數據來作為對象的標識符,這個標識符號常被稱為對象的句柄。arg1等為消息所帶的參數。
雖然發消息類似於標准的函數調用,但消息也有函數調用中沒有的特性,例如,消息始終在執行一選擇機制,其參數與其它消息區別開來,從而告訴該對象完成什麼樣的操作。一個函數名始終指向內存中該函數的代碼所位於的確定地址,消息並不指向內存中的某地址,但卻告訴接受消息的對象要引用的內存地址是什麼。函數不僅說明操作,而且還要執行如何完成該操作的方法。消息只說明該操作,在對象中定義的方法說明如何完成該操作。當向不同的對象發送相同的消息時,所執行的方法是不同的。
在面向對象的程序設計中,每個對象由一個類來定義,類是對一組性質相同的對象的程序描述,它是由概括了一組對象共同性質的方法和數據組成。從一組對象中抽象出公共的方法與數據,將它們保存在一個類中是面向對象程序設計的核心。
在日常生活中,我們也以類這種方式來定義客觀對象。通過對客觀對象進行抽象,我們將性質相同的對象歸為一類,形成概念,例如,人類、蘋果類、食品類等。通過對客觀對象分類,我們也可以更好地認識客觀對象,例如,當知道張三是一個人時,不用對張三進行更多的描述,我們已知道張三作為一個人所具有的特征和行為,因為它們已經在“人”類中進行了描述。
在面向對象的程序中,類被用作樣板來生產具有相同行為方式的對象。類就像是生產對象的一個工廠,在生產對象時,對象具有類中所描述的同樣的數據結構和方法,同時,對象的每個數據在創立之初取得一個初始值,形成對象的初始狀態。對象通過發送消息相互作用,對象的狀態從一種狀態過渡到另一種狀態,當所有的有關對象到達某種特定的狀態時就得程序的運行結果。
使用類產生對象的過程也稱為生成該類的一個實例。因此,對象也可以定義為對象是類的一個實例。定義類也意味著將該類的對象公用代碼放在內存的公共區域中,而不必對每個對象都將它們的代碼和數據重新進行一次描述,這減輕了程序員的勞動強度。我們可以將一些常用對象定義放在一個公用庫中,而在程序中需要該類的一個對象時,就創建該類的一個實例。Windows已為程序員預定義了許多像按鈕、滾動槓和對話框等對象的類,當程序員需要這些類的對象時,僅需創立該類的實例即可。對於同一個類的不同對象,在建立對象時其初始狀態不同,因而這些對象在屏幕上顯示的位置、大小等屬性也不相同,但同類的對象的操作是相同的(因為它們共用相同的方法)。這也就是為什麼不同的Windows應用程序對用戶表現出一致的操作特性的原因之一。1.5、句柄
Windows應用程序中存在許多對象,例如選單、窗口、圖標、內存對象、位圖、刷子、設備對象和程序實例等,在Windows中,對象使用句柄進行標識,這樣,通過使用一個句柄,應用程序可以訪問一個對象。
在Windows軟件開發工具中,句柄被定義為一種新的數據類型。在應用程序中,對句柄的使用一般只有賦值(句柄可以