所謂控制代碼實際上是乙個資料,是乙個long (整長型)的資料。
控制代碼是wondows用來標識被應用程式所建立或使用的物件的唯一整數,windows使用各種各樣的控制代碼標識諸如應用程式例項,視窗,控制,位圖,gdi物件等等。windows控制代碼有點象c語言中的檔案控制代碼。
從上面的定義中的我們可以看到,控制代碼是乙個識別符號,是拿來標識物件或者專案的,它就象我們的姓名一樣,每個人都會有乙個,不同的人的姓名不一樣,但是,也可能有乙個名字和你一樣的人。從資料型別上來看它只是乙個16位的無符號整數。應用程式幾乎總是通過呼叫乙個windows函式來獲得乙個控制代碼,之後其他的 windows函式就可以使用該控制代碼,以引用相應的物件。
如果想更透徹一點地認識控制代碼,我可以告訴大家,控制代碼是一種指向指標的指標。我們知道,所謂指標是一種記憶體位址。應用程式啟動後,組成這個程式的各物件是住留在記憶體的。如果簡單地理解,似乎我們只要獲知這個記憶體的首位址,那麼就可以隨時用這個位址訪問物件。但是,如果您真的這樣認為,那麼您就大錯特錯了。我們知道,windows是乙個以虛擬記憶體為基礎的作業系統。在這種系統環境下,windows記憶體管理器經常在記憶體中來回移動物件,依此來滿足各種應用程式的記憶體需要。物件被移動意味著它的位址變化了。如果位址總是如此變化,我們該到**去找該物件呢?
為了解決這個問題,windows作業系統為各應用程式騰出一些內儲存位址,用來專門登記各應用物件在記憶體中的位址變化,而這個位址(儲存單元的位置)本身是不變的。windows記憶體管理器在移動物件在記憶體中的位置後,把物件新的位址告知這個控制代碼位址來儲存。這樣我們只需記住這個控制代碼位址就可以間接地知道物件具體在記憶體中的哪個位置。這個位址是在物件裝載(load)時由系統分配給的,當系統解除安裝時 (unload)又釋放給系統。
控制代碼位址(穩定)→記載著物件在記憶體中的位址————→物件在記憶體中的位址(不穩定)→實際物件
本質:windows程式中並不是用實體地址來標識乙個記憶體塊,檔案,任務或動態裝入模組的,相反的,windows api給這些專案分配確定的控制代碼,並將控制代碼返回給應用程式,然後通過控制代碼來進行操作。
但是必須注意的是程式每次從新啟動,系統不能保證分配給這個程式的控制代碼還是原來的那個控制代碼,而且絕大多數情況的確不一樣的。假如我們把進入電影院看電影看成是乙個應用程式的啟動執行,那麼系統給應用程式分配的控制代碼總是不一樣,這和每次電影院售給我們的門票總是不同的乙個座位是一樣的道理。
vc 基礎知識 常用控制代碼
控制代碼型別 說明hwnd 視窗控制代碼 hinstance 當前實列控制代碼 hcursor 游標控制代碼 hfont 字型控制代碼 hpen 畫筆控制代碼 hbrush 畫刷控制代碼 hdc 裝置環境控制代碼 hbitmap 位圖控制代碼 hicon 圖示控制代碼 hmenu 選單控制代碼 hf...
Java基礎知識點收集
1.threadlocal 記憶體模型 對於多執行緒資源共享的問題,同步機制採用了 以時間換空間 的方式,而threadlocal採用了 以空間換時間 的方式。前者僅提供乙份變數,讓不同的執行緒排隊訪問,而後者為每乙個執行緒都提供了乙份變數,因此可以同時訪問而互不影響 threadlocal本質上是...
神經網路基礎知識收集
更新中 1 神經網路 人工神經網路 artificial neural network,ann 是指一系列受生物學和神經學啟發的數學模型。這些模型主要是通過對人腦的神經元網路進行抽象,構建人工神經元,並按照一定拓撲結構來建立人工神經元之間的連線,來模擬生物神經網路。在人工智慧領域,人工神經網路也常常...