C 學習(一五一)hwnd hdc hglrc

2021-10-24 13:54:35 字數 2360 閱讀 1482

hwnd:h是型別描述,表示控制代碼(handle),wnd是變數物件描述,表示視窗,所以hwnd表示視窗控制代碼。microsoft windows執行環境,通過給應用程式中的每個窗體和控制項分配乙個控制代碼來標識他們。hwnd屬性用於windows api呼叫。許多windows執行環境函式需要活動視窗的hwnd作為引數。在windows環境中,控制代碼是用來標識專案的,這些專案包括:  

*.模組(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)。  

hdc:裝置上下文是一種包含有關某個裝置的繪製屬性資訊的windows資料結構。所有繪製呼叫都通過裝置上下文物件進行,這些物件封裝了用於繪製線條,形狀和文字的windows api。它並沒有直接對映到顯示卡、顯示器等硬體裝置,而是對映到一種記憶體虛擬結構(可以認為就是乙個視窗)。

hglrc:圖形操作描述表。opengl render contex。在windows下用gdi作圖必須通過dc呼叫相應的函式;用opengl作圖也是類似,opengl函式是通過render context完成三維圖形的繪製。windows下的視窗和裝置上下文支援「位圖格式」(pixelformat)屬性,和rc有著位圖結構上的一致。只要在建立rc時與乙個dc建立聯絡,opengl的函式就可以通過rc對應的dc畫到相應的顯示裝置上。

hwnd是windows給視窗傳送訊息(事件)用的

hdc是把視窗繪製在螢幕上用的。

hglrc是opengl用的。

在通用型的象素格式下,所有的象素格式和渲染上下文都是通過gdi來實現的。在裝置型象素格式下,多數操作是通過裝置來實現的。在opengl繪圖的時候,視窗,點陣圖或裝置的象素格式必須設定好,然後產生乙個渲染上下文,這之後繪圖功能才能生效。

dc用來產生opengl 的渲染上下文,opengl使用這個渲染上下文在dc上繪圖,最後dc把圖形繪製在裝置顯示上。

_hwnd = ::createwindowex(extendedstyle,

_traits->usecursor ? win32windowingsystem::osggraphicswindowwithcursorclass.c_str() :

win32windowingsystem::osggraphicswindowwithoutcursorclass.c_str(),

_traits->windowname.c_str(),

windowstyle,

_windoworiginxtorealize,

_windoworiginytorealize,

_windowwidthtorealize,

_windowheighttorealize,

null,

null,

::getmodulehandle(null),

null);

if (_hwnd==0)

_hdc = ::getdc(_hwnd);

if (_hdc==0)

//// set the pixel format according to traits specified

//if (!setpixelformat())

//// create the opengl rendering context associated with this window

//_hglrc = createcontextimplementation();

if (_hglrc==0)

關於rc有以下需要注意的地方:

2.設定dc點陣圖格式等於設定了相應視窗的點陣圖格式,並且dc和視窗的點陣圖格式一旦確認就不能再改變。

3.乙個rc雖然可以更換dc,但在任何時刻只能利用乙個dc,但由於乙個視窗可以讓多個dc作圖從而可以讓多個執行緒利用多個rc在該視窗上執行opengl操作。

4.當使用雙快取用opengl產生動畫時,不能使用gdi函式向該dc作圖。

在使用opengl進行繪圖之前,需要設定視窗的型別屬性中的ws_clipchildren和ws_clipsiblings,否則函式setpixelformat的呼叫將失敗。

著色正文與裝置正文有著相同的象素格式。

筆記 C 五一學習 分治

今天是五一,晚上學c 分治演算法 二分查詢跨度大,速度快,列舉的跨度為1,所以慢 二分是折半的,速度logn,非常快,基礎 如下 引數atarget是目標數,adata是數列,n是陣列長度 如果按照列舉的方法,是這樣的 bool search int atarget,int adata,int n ...

五一學習情況總結

時間還是那麼匆匆,短短的五天假期就這麼過去了。回想這幾天的收穫,主要的有兩方面 一是關於九期的作品展 二是自己的學習情況。在預演過程中,我感受到了九期同學眼中的那一縷炙熱,那是對作品展的一種嚮往。想要向大家展示這些日子來,他們努力的成果。那是一種自豪。我們也經歷過。這是一種難言的莫名,只有經歷了,才...

五一學習記錄(一)

l 藍芽的除錯,使用兩路adc取樣,要連線了就可以傳送資料了,同時要學會看錯誤 在config.h裡面吧debug的level選擇為debug,同時在c c 的預定義中,新增debug的巨集定義。2 amd和intel的處理器了解,amd的apu是比較老的,因此在thinkpad的e425筆記本是無...