1. 程式人生 > >window核心程式設計小記一

window核心程式設計小記一

本來寫記記c/c++基礎方面的,比如說指標、陣列等等,但是考慮到什麼東西都是歸根於應用,所以以後對於c/c++應用方面的還是多記,至於基礎方面的感覺還是先去看那些經典大作,比如《c++ primer》、《thinking in c++》之類的。因此以後該為c應用方面的。

windows 核心程式設計(版本4)

前言

關於本書,廢話少講,若是想win中有所成就,本書絕對不能錯過,當然你也可以去研讀msdn,至於作者是誰我們不用於管那麼多,如果你真的對他有興趣的話,那你還可以去讀讀jeff的其他書,類似《框架設計》。

第一章 對程式錯誤處理

首先需要了解函式執行錯誤是如何體現的?體現的途徑?好的,函式執行錯誤很重要的一個體現就是返回值,因此,首先需要了解函式返回值的具體含義,返回值的含義等。大概有

1.VOID   表示函式的執行不可能失敗,這句話有待考究。

2.BOOL  這個BOOL有個陷阱,其實它需要表示的意思實際上是0(失敗) or !0。

3.HANDLE 控制代碼,一般核心物件相關的函式都會涉及到,用於表示一個物件,失敗時通常NULL值,也可能是<0,其實即使失敗時,即使handle <=0。

4.PVOID 指標,為NULL表示失敗,否則返回記憶體地址。

5.LONG / DOWRD 稍微複雜,具體參考msdn;

對於已經執行失敗的函式,如何獲取函式失敗原因?GetLastError()可以幫助你,但是此函式執行機制才是你需要了解的重點,函式執行後,需要立馬呼叫此函式,否則獲取到的error_no可能就不準了,具體參考書。

關於error_no的解釋都可以從WinError.h中找到,ms也提供了另外更快捷的tools->error lookup。

另外,ms也提供了通過error_no轉換成相應資訊的函式FormatMessage。為什麼ms不適用列表方式管理錯誤資訊呢?

當然,也可以自己定製錯誤資訊,通過呼叫SetLastError實現。其實微軟這種錯誤處理的方法在自己系統的設計時候可以採用類似的方法。

第二章 Unicode

本章直接就用unicode作了章名,當然整章都是圍繞unicode展開的,比如ansi如何的不好,如何的不安全之類的,而unicode又如何的好如何的安全的之類的,個人感覺是設計所需即可。

關於字元方面的東西,感覺想要深入瞭解,直接google、百度(個人比較hate it)等。

需要了解ansi與Unicode的差異,字符集出現的原因等。

接著即轉入字元相關的函式,strlen、strstr、strcpy當然相應的有wcscat、wcslen等以及相應的變體函式,可以參考msdn。

關於UNICODE & _UNICODE ,關於unicode與ansi的轉換,通過巨集實現。

_TEXT巨集,以及寬字元的定義。另外windows字串函式(unicode),比如lstrcat,lstrcmp等。關於字串比較函式CompareString的具體意義是使用。

重點是學到如何通過巨集來實現轉換,更何況windows就是這樣實現的,而至於那一堆函式,完全可以投靠與msdn,不過儘量做到其所以然路徑上的擴充套件。