熬之滴水穿石 一切從windows程式設計開始 4

2021-06-14 08:56:48 字數 1228 閱讀 2458

4--winodws程式設計的核心函式

實際上我是從delphi的rad工具走上windows程式設計這條道上,所以最初我接觸到了windows程式設計是非常簡單的。在很長一段時間,我並沒有使用過真正意義上的windowsapi函式,delphi強大的vcl框架遮蔽了一切。讓我對於windows程式設計上面理解很是片面,很是膚淺。我一直以為拖動幾個控制項寫幾個事件**就是windows程式設計。直到後來我看到我一同事用vc寫程式,我從編輯器裡看到了一些我從未看到過的**,那樣的過程讓我引起一陣陣的恐慌。在對windows系統執行機制並不是熟悉的情況下,windows程式設計是一本很難啃下的骨頭,尤其後來做到多執行緒訊息通訊程式設計和iocp程式設計時發現了這方面的不足。

但最為關鍵的還是要知道原理,知道windows視窗處理的機制到底是怎麼一回事,把這個搞明白了。再看看這些那些核心的api函式也不難理解了!那些年時常看到許多人在簡歷中寫精通windows程式設計,其實真正精通windows又能有幾人了。不過真正理解windows程式設計是可以通過幾個函式加深理解的,而這些都又跟作業系統原理相關的。以這些函式為切入點,深入進去也許你會發現會簡單些。我對於windows的重新了解都是從我那筆陳年舊賬的解決過程開始的,一切都是基於windows系統程序的狀態開始的。所以我對於這幾個函式很有印象。

waitforsingleobject()

官方的解釋為:該函式用來檢測hhandle事件的訊號狀態,在某一線程中呼叫該函式時,執行緒暫時掛起,如果在掛起的dwmilliseconds毫秒內,執行緒所等待的物件變為有訊號狀態,則該函式立即返回;如果超時時間已經到達dwmilliseconds毫秒,但hhandle所指向的物件還沒有變成有訊號狀態,函式照樣返回。引數dwmilliseconds有兩個具有特殊意義的值:0和infinite。若為0,則該函式立即返回;若為infinite,則執行緒一直被掛起,直到hhandle所指向的物件變為有訊號狀態時為止。

官方描述非常專業,實際理解起來卻很是簡單:其實這個函式就是在等待時間發生時使用的,該函式就是讓自己stop,等待事件發生而已。

gettickcount()

官方解釋為:從作業系統啟動到現在所經過(elapsed)的毫秒數,它的返回值是dword。一般用於實時控制,該方法運用比較多。當然該方法你如果覺得還不夠精確,如果需要更精確的話,那就需要另外q的queryperformancefrequency()和queryperformancecounter()方法,該方法可更用於基於cpu轉精度所需的資料

(未完待續.........)

機制方法熬之滴水穿石 Delphi曾經的利器 8

每日一貼,今天的內容關鍵字為機制方法 12 delphi的介面 到現在我都認為介面程式設計比類繼承更加的具有彈性和更適用於很多的應用中,很多人都認為多重繼承是乙個很高超的方法,其實多重繼承的功能讓整個類越來越臃腫起來,介面程式設計是乙個講究實際,比較親近物件導向發展潮流的技術,巧妙的介面計畫可以控制...