GDI及DC接口

GDI

GDI是Graphics Device Interface的縮寫,含義是圖形設(shè)備接口蜒茄,它的主要任務(wù)是負(fù)責(zé)系統(tǒng)與繪圖程序之間的信息交換唉擂,處理所有Windows程序的圖形輸出。
GDI具有如下特點(diǎn):

  1. 不允許程序直接訪問物理顯示硬件扩淀,通過稱為“設(shè)備環(huán)境”的抽象接口間接訪問顯示硬件楔敌;
  2. 程序需要與顯示硬件(顯示器、打印機(jī)等) 進(jìn)行通訊時(shí),必須首先獲得與特定窗口相關(guān)聯(lián)的設(shè)備環(huán)境驻谆;
  3. 用戶無需關(guān)心具體的物理設(shè)備類型卵凑;
  4. Windows參考設(shè)備環(huán)境的數(shù)據(jù)結(jié)構(gòu)完成數(shù)據(jù)的輸出。

GDI函數(shù)大致可分類為:
設(shè)備上下文函數(shù)(如GetDC胜臊、CreateDC勺卢、DeleteDC)、 畫線函數(shù)(如LineTo象对、Polyline黑忱、Arc)、填充畫圖函數(shù)(如Ellipse勒魔、FillRect甫煞、Pie)、畫圖屬性函數(shù)(如SetBkColor冠绢、SetBkMode抚吠、SetTextColor)、文本弟胀、字體函數(shù)(如TextOut楷力、GetFontData)、位圖函數(shù)(如SetPixel孵户、BitBlt萧朝、StretchBlt)、坐標(biāo)函數(shù)(如DPtoLP夏哭、LPtoDP检柬、ScreenToClient、ClientToScreen)竖配、映射函數(shù)(如SetMapMode何址、SetWindowExtEx酱固、SetViewportExtEx)、元文件函數(shù)(如PlayMetaFile头朱、SetWinMetaFileBits)、區(qū)域函數(shù)(如FillRgn龄减、FrameRgn项钮、InvertRgn)、路徑函數(shù)(如BeginPath希停、EndPath烁巫、StrokeAndFillPath)、裁剪函數(shù)(如SelectClipRgn宠能、SelectClipPath)等

設(shè)備上下文

設(shè)備描述表(Device Context, 縮寫為DC)也稱設(shè)備上下文或設(shè)備環(huán)境亚隙。簡單來說,就是一種包含各種繪圖屬性(字體违崇,顏色)和方法(繪圖函數(shù))的數(shù)據(jù)結(jié)構(gòu)阿弃。設(shè)備描述表定義了設(shè)備,繪圖工具和畫圖信息羞延,其不僅可以繪制各種圖形渣淳,還可以確定在應(yīng)用窗口中繪制圖形的方式和圖形的樣式。
Windows所有的繪制操作及圖形輸出都必須通過設(shè)備描述表這個(gè)虛擬用戶工作區(qū)來進(jìn)行伴箩。用戶在繪制之前入愧,必須獲取繪制窗口區(qū)域的一個(gè)設(shè)備環(huán)境DC,接著才能進(jìn)行GDI函數(shù)的調(diào)用嗤谚,執(zhí)行適合與設(shè)備環(huán)境的命令棺蛛。

獲取設(shè)備上下文的方法

  • GetDC
CDC * GetDC();

該函數(shù)用于獲取窗口工作區(qū)的顯示器設(shè)備描述表,其不帶任何參數(shù)巩步。如果函數(shù)條用成功旁赊,則返回標(biāo)識CWnd客戶區(qū)的設(shè)備環(huán)境,否則返回NULL渗钉。
說明:在完成繪圖之后彤恶,用GetDC函數(shù)獲取的設(shè)備描述表必須通過ReleaseDC函數(shù)來釋放。

  • BeginPaint
CDC * BeginPaiint(LPPAINTSTRUCT lpPaint);

Windows應(yīng)用程序響應(yīng)WM_PAINT消息進(jìn)行圖形刷新時(shí)鳄橘,會通過調(diào)用BeginPaint()函數(shù)來獲取DC声离。

參考:設(shè)備描述表概念及使用

FindWindowEx

HWND FindWindowExA(
  [in, optional] HWND   hWndParent,
  [in, optional] HWND   hWndChildAfter,
  [in, optional] LPCSTR lpszClass,
  [in, optional] LPCSTR lpszWindow
);

檢索類名稱和窗口名稱與指定字符串匹配的窗口的句柄。該函數(shù)搜索子窗口瘫怜,從指定子窗口后面的那個(gè)開始术徊。此函數(shù)不執(zhí)行區(qū)分大小寫的搜索。

  • hWndParent
    要搜索其子窗口的父窗口的句柄鲸湃。即指定搜索某個(gè)窗口(hWndParent)下的子窗口鏈表赠涮。
  • hWndChildAfter
    子窗口的句柄子寓。當(dāng)父窗口的子窗口鏈表中有多個(gè)子窗口時(shí),比如有10個(gè)直系子窗口笋除,分別為child1~child10斜友,當(dāng)hWndChildAfter指定為child4時(shí),該函數(shù)的搜索會從child5開始搜索垃它。

GetWindow

HWND GetWindow(
  [in] HWND hWnd,
  [in] UINT uCmd
);

返回與指定窗口有特定關(guān)系(如Z序或所有者)的窗口句柄鲜屏。
參數(shù):
  hWnd:窗口句柄。要獲得的窗口句柄是依據(jù)nCmd參數(shù)值相對于這個(gè)窗口的句柄国拇。
  nCmd:說明指定窗口與要獲得句柄的窗口之間的關(guān)系洛史。

OpenProcess

HANDLE OpenProcess(
  [in] DWORD dwDesiredAccess,
  [in] BOOL  bInheritHandle,
  [in] DWORD dwProcessId
);

打開一個(gè)已存在的進(jìn)程對象,并返回進(jìn)程的句柄酱吝。

  • dwDesiredAccess
    想擁有的該進(jìn)程訪問權(quán)限
  • bInheritHandle
    表示所得到的進(jìn)程句柄是否可以被繼承
  • dwProcessId
    被打開進(jìn)程的PID
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末也殖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子务热,更是在濱河造成了極大的恐慌忆嗜,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件崎岂,死亡現(xiàn)場離奇詭異霎褐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)该镣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門冻璃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人损合,你說我怎么就攤上這事省艳。” “怎么了嫁审?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵跋炕,是天一觀的道長。 經(jīng)常有香客問我律适,道長辐烂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任捂贿,我火速辦了婚禮纠修,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘厂僧。我一直安慰自己扣草,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辰妙,像睡著了一般鹰祸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上密浑,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天蛙婴,我揣著相機(jī)與錄音,去河邊找鬼尔破。 笑死敬锐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呆瞻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼径玖,長吁一口氣:“原來是場噩夢啊……” “哼痴脾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起梳星,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤赞赖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后冤灾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體前域,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年韵吨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匿垄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡归粉,死狀恐怖椿疗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糠悼,我是刑警寧澤届榄,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站倔喂,受9級特大地震影響铝条,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜席噩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一班缰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧悼枢,春花似錦鲁捏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽假丧。三九已至,卻和暖如春动羽,著一層夾襖步出監(jiān)牢的瞬間包帚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工运吓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渴邦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓拘哨,卻偏偏與公主長得像谋梭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子倦青,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容