我們都知道視窗程式設計一直都是讓人頭痛的問題,相信有用系統的 Native API 寫過 GUI
介面的讀者們都可以體會,不管是 MS Windows 還是 Unix 上的 X Window System 或者是
少數有些人可能有過 MAC OS 下 GUI 程設經驗 ( 我指的是更古老的 MAC 系統,非 OS X
),
使用系統的 Native API 撰寫 GUI 是很痛苦的工程,但是我的過來經驗是有過 Native Level
的 GUI 編程其實還是很有用,因為你會了解到任何 OS 下 GUI 子系統的基本法則都很相似
主要基本觀念不外乎就是 GUI 子系統 (有時候會稱為 Window Manager) 會不斷監控各種
視窗訊息並且將訊息傳送給應用程式,一個完整的應用程式一般會有很多的回呼函式來
回應各種訊息,假如不想處理訊息的就利用特殊的 API 送回系統,已經處理過的就不用送回
系統,而訊息一般都會被
轉譯或
分派,但是一般不需理會,只要在已經註冊好的視窗回呼函
式用 Switch Case 敘述作訊息攔截撰寫對應動作的程式,這就是系統底層怎麼運作 GUI 程式
的基本原理,當然沒這麼簡單,因為有些
訊息往往還會夾帶
通知,這樣可以更精確的獲得
UI 本身更細部的行為改變,而且不同訊息所夾帶的附加資訊又不同,所以一般寫比較複雜
的 GUI 程式都要花許多時間查閱資料,基本上 Native GUI API 就是一大堆系統提供的
C 函式組合的集合,不妨將這個基本觀念用圖來表示 ( 這邊以 Windows 系統為例 ):