控制代碼的真正理解

2021-08-11 04:22:59 字數 1015 閱讀 9403

**真理一句話:控制代碼是引用,而不是指標。只能改變對應物件的內容,但不知道物件在哪。 **

以下內容摘取網上資源,如有違反作者版權,請通知。

控制代碼是用來標識專案的。(它就象我們的姓名一樣,每個人都會有乙個,不同的人的姓名不一樣,但是,也可能有乙個名字和你一樣的人。有一說法是指向指標的指標)

專案包括:模組(module)、任務(task)、例項 (instance)、檔案(file)、記憶體塊(block of memory)、選單(menu)、控制(control)、字型(font)、資源(resource),包括圖示(icon),游標 (cursor),字串(string)等、gdi物件(gdi object),包括位圖(bitmap),畫刷(brush),元檔案(metafile),調色盤(palette),畫筆(pen),區域 (region),以及裝置描述表(device context)。

實質:在windows中,控制代碼是和物件一一對應的32位無符號整數值。應用程式幾乎總是通過呼叫乙個windows函式來獲得乙個控制代碼,之後其他的windows函式就可以使用該控制代碼,以引用相應的物件。

形象說法:要想控制某一裝置,不去直接控制裝置,而是控制裝置的操作手柄。

使用控制代碼的好處:

windows需要向程式設計師提供必要地程式設計介面,在這些介面中,允許程式設計師訪問、建立和銷毀物件。出於封裝地考慮,windows並不想向程式設計師返回指標。

控制代碼和物件對映:

在windows中,存在兩種對映方式

a. 全等對映,也即,控制代碼本身就是乙個指標,對映在這裡只是型別轉換而已。這種情況有,程序例項控制代碼或模組控制代碼,以及資源控制代碼等等

b. 基於**的對映。這是物件指標與控制代碼之間最普通的對映機制。作業系統建立**,並儲存所有要考慮的物件。需要建立新物件時,要先在**中找到空入口,然後把表示物件的資料添入其中。當物件被刪除時,它的資料成員和其在表中的入口被釋放。

控制代碼和指標的區別:控制代碼就是你的上smth的id 通過這個id,無論你在那裡我都可以找到你, 但是指標就好像你上機的地方, 在這個地方,可以找到你, 但是你的id是不變化的 ,上機地方可以變。

真正理解java wait notify

從字面上理解,notify 方法能夠喚醒乙個正在等待該物件的monitor的執行緒,當有多個執行緒都在等待該物件的monitor的話,則只能喚醒其中乙個執行緒,具體喚醒哪個執行緒則不得而知。nofityall 方法能夠喚醒所有正在等待該物件的monitor的執行緒,這一點與notify 方法是不同的...

真正理解矩陣

孟巖,從很獨特的角度理解矩陣。理解矩陣 一 理解矩陣 二 理解矩陣 三 這裡的運動不同於物理中連續的運動,而是瞬間的從一點到另一點的運動 即躍遷 術語為 變換 因此,矩陣是對線性空間裡變換 即線性變換 的描述。選的基 座標系 不同,同乙個變換就有不同的描述,即有不同的矩陣,這些矩陣是相似的,矩陣a,...

typedef的真正理解

首先請看看下面這兩句 typedef int a 10 typedef void p void 如果你能一眼就看出它們的意思,那請不要再往下看了。如果你不太理解,或概念還有些模糊,請繼續往下看吧。下面的東西我就直接把人家的東西粘上去吧。自己敲太慢了。呵呵。原文 摘錄 typedef用來宣告乙個別名,...