創建窗口代碼分析一

變量

1、  Rendering Context(着色描述表)

每一個OpenGL都被連接到一個着色描述表上。着色描述表將所有的OpenGL調用命令連接到Device Context(設備描述表)上。OpenGL的着色描述表定義爲 hRC

 

2、  Device Context(設備描述表)

讓程序能夠繪製窗口。Windows的設備描述表被定義爲 hDC DC將窗口連接到GDI(Graphics Device Interface圖形設備接口)。而RCOpenGL連接到DC

 

3、  hWnd

保存由Windows給窗口指派的句柄。

 

4、  Instance(實例)

爲程序創建了一個Instance(實例)

 

5keys[256]爲什麼有256個?)

用來監控鍵盤動作的數組。可以處理多個鍵同時按下的情況。

 

6active 變量
用來告知程序窗口是否處於最小化的狀態。如果窗口已經最小化的話,可以做從暫停代碼執行到退出程序的任何事情。暫停程序可以使得程序不用在後臺保持運行。


7
fullscreen 變量

如果程序在全屏狀態下運行, fullscreen 的值爲TRUE,否則爲FALSE。它讓每個過程都知道程序是否運行在全屏狀態下。

 

C++語法

一個過程引用其它過程或程序前先要先定義該過程或程序,如果被引用的過程或程序在引用的過程前面,可以省略定義.

 

PuzzleWord

 

句柄Windows用來標識被應用程序所建立或使用的對象的唯一整數,Windows使用各種各樣的句柄標識諸如應用程序實例,窗口,控制,位圖,GDI對象等等。Windows句柄有點象C語言中的文件句柄。

從數據類型上來看它是一個16位的無符號整數。應用程序幾乎總是通過調用一個Windows函數來獲得一個句柄,之後其他的Windows函數就可以使用該句柄,以引用相應的對象。

句柄是一種指向指針的指針。我們知道,所謂指針是一種內存地址。應用程序啓動後,組成這個程序的各對象是住留在內存的。如果簡單地理解,似乎我們只要獲知這個內存的首地址,那麼就可以隨時用這個地址訪問對象。但是,如果您真的這樣認爲,那麼您就大錯特錯了。我們知道,Windows是一個以虛擬內存爲基礎的操作系統。在這種系統環境下,Windows內存管理器經常在內存中來回移動對象,依此來滿足各種應用程序的內存需要。對象被移動意味着它的地址變化了。如果地址總是如此變化,我們該到哪裏去找該對象呢?

爲了解決這個問題,Windows操作系統爲各應用程序騰出一些內存儲地址,用來專門登記各應用對象在內存中的地址變化,而這個地址(存儲單元的位置)本身是不變的。Windows內存管理器在移動對象在內存中的位置後,把對象新的地址告知這個句柄地址來保存。這樣我們只需記住這個句柄地址就可以間接地知道對象具體在內存中的哪個位置。這個地址是在對象裝載(Load)時由系統分配給的,當系統卸載時(Unload)又釋放給系統。

句柄地址(穩定)→記載着對象在內存中的地址————→對象在內存中的地址(不穩定)→實際對象

本質:WINDOWS程序中並不是用物理地址來標識一個內存塊,文件,任務或動態裝入模塊的,相反的,WINDOWS API給這些項目分配確定的句柄,並將句柄返回給應用程序,然後通過句柄來進行操作。

但是必須注意的是程序每次從新啓動,系統不能保證分配給這個程序的句柄還是原來的那個句柄,而且絕大多數情況的確不一樣的。假如我們把進入電影院看電影看成是一個應用程序的啓動運行,那麼系統給應用程序分配的句柄總是不一樣,這和每次電影院售給我們的門票總是不同的一個座位是一樣的道理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章