星期四, 6月 26, 2008

Programming Applications for Microsoft Windows

看這本書的動機是因為我完全不會Win32下的程式設計,從高中到現在,我一直只是活在C++標準函式庫裡的乖寶寶。雖然大一有和DL、DNA、Twsam、神Kochi一起組隊去比趨勢百萬程式設計競賽,不過那時大家都只能算是瞎子摸象,基本上實際上的Win32可能沒有人會,所以才會出現我加了個Mutex鎖住某資源讓程式可以動,Kochi就會很驚訝,還是說我會蠢蠢的認為GUI其實不必main thread也會自己動,就在main thread裡很豪氣的開了while(1)等怪事。可能是因為大家都寫ACM寫習慣,ACM只要用C++制定出來的function就好,真正的系統呼叫全部被包在那些包裝精美的ANSI function下面,這多棒啊.....

不過後來覺得這樣子不是什麼好事情,光靠Console Application + 萬年ANSI library想吃遍天下似乎是很愚蠢的行為,明明就天天在用Win32的東西,可是卻不知道他們要怎樣寫出來,想一想就有點賭爛,所以就決定打開了這本書。

我手頭上的Win32 Programming其實還有Charlie Petzold先生寫的Programming Windows,內容大概就是怎樣開視窗,怎樣拿畫筆在上面畫畫,寫的都是一些wxWidget百萬年前就包起來的事情,相對的這本Programming Applications for Microsoft Windows寫了非常多很炫的東西,比如這本書會告訴你Structed Exception Handling(請勿和C++的Exception搞混)怎麼運作,如何無痛學會DLL hooking,輕輕鬆鬆讀別人的Process,快快樂樂Muiltithreading,基於對高技術含量書本的飢渴心態我就選了這本來唸。

唸得結果出乎意料的順,本來想說沒學過Windows Message Loop等基本概念閱讀會有點困難,不過這些東西似乎太過基本,有時書本稍微提到,只要自己稍微根據那一丁點稀薄的作業系統知識想一下還是大概可以知道Code怎麼運作,Win32的架構裡面也沒提到太複雜的東西,什麼DCOM等一大堆奇怪的服務統統沒有提到,反正就是集中火力攻打可能比較容易死人的地方,如多執行緒的同步,DLL & Address Space等,閱讀過程相當愉快就是。雖然唸了以後可能還是無法空手寫出一個Win32 application(基本的開Window,叫MessageBox這本書沒教,要回去翻查理先生的書XD),但唸完還是覺得值回票價。

下本書會回到C爸爸的The C++ Language,先把Exception、Template等當初根本不碰的東西弄熟。 全文連結

0 意見: