cdc和hdc的區別與轉換
一、區別與聯絡
hdc是控制代碼;cdc是mfc封裝的windows 裝置相關的乙個類;cclientdc是cdc的衍生類,產生對應於windows客戶區的物件
hdc是windows的一種資料型別,是裝置描述控制代碼。
而cdc是mfc裡的乙個類,它封裝了幾乎所有的關於hdc的操作。
也可以這樣說,hdc定義的變數指向一塊記憶體,這塊 記憶體用來描述乙個裝置的相關的內容,所以也可以 認為hdc定義的是乙個指標;而cdc類定義乙個物件, 這個物件擁有hdc定義的乙個裝置描述表,同時也包 含與hdc相關的操作的函式。
這與hpen和cpen,point與cpoint之間的差別是一樣的。
二、獲得cdc *
cdc* pdc
pdc=getdc();
三、獲得hdc
hdc hdc;
1,hdc=getdc(pcxp->hwnd);
2,pdc->m_hdc;
3,memdcxp mdcxp;
getmemdcxp(&mdcxp);
hdc = mdcxp.hmemdc;
4,hdc=::getdc(hwnd handle)
四、轉換
cdc* pdc
hdc hdc;
pdc=attach(hdc);
hdc=getsafehdc(pdc);
pdc->m_hdc==hdc
cdc、hdc、pdc
1.cdc *pdc和hdc hdc有什麼不同,類似的有cwnd *pwnd和hwnd?
pdc是類指標
hdc是windows控制代碼
通過pdc獲得hdc:
hdc hdc=pdc->getsafehdc();
通過hdc獲得pdc:
cdc *pdc=new cdc;
pdc->attach(hdc);
2.hdc和cdc有本質區別
hdc是windows的一種資料型別,是裝置描述控制代碼。而cdc是mfc裡的乙個類,它封裝了幾乎所有的關於hdc的操作。也可以這樣說,hdc定義的變數指向一塊記憶體,這記憶體用來描述乙個裝置的相關的內容,所以也可以認為hdc定義的是乙個指標;而cdc類定義乙個物件,這個物件擁有hdc定義的乙個裝置描述表,同時也包含與hdc相關的操作的函式。這與hpen和cpen,point與cpoint之間的差別是一樣的。
cdc是對hdc的相關操作進行封裝,例如cdc的乙個textout函式隱去其錯誤檢測,完全可以簡化到這樣程度cdc:textout( int x, int y, const cstring& str )
m_hdc就是cdc的成員變數hdc m_hdc;
cdc有乙個operator hdc() const
你可以把它當成乙個hdc使用
3.this是dc輸出目標視窗的指標,通過它可以得到視窗控制代碼,物件帶參構造這有什麼奇怪的呢?
cpaintdc 無效區dc,相當於beginpaint, endpaint
cclientdc 客戶區dc,相當於getdc, releasedc
cwindowdc 整視窗dc, 相當於getwindowdc, releasedc
cdc 任何dc, 相當於createdc, deletedc
CDC和HDC的區別與轉換
cdc和hdc的區別與轉換 一 區別與聯絡 hdc是控制代碼 cdc是mfc封裝的windows 裝置相關的乙個類 cclientdc是cdc的衍生類,產生對應於windows客戶區的物件 hdc是windows的一種資料型別,是裝置描述控制代碼。而cdc是mfc裡的乙個類,它封裝了幾乎所有的關於h...
HDC與CDC相互轉換
首先說一下什麼是dc 裝置描述表 windows應用程式通過為指定裝置 螢幕,印表機等 建立乙個裝置描述表 device context,dc 在dc表示的邏輯意義的 畫布 上進行圖形的繪製。dc是一種包含裝置資訊的資料結構,它包含了物理裝置所需的各種狀態資訊 win32程式在繪製圖形之前需要獲取d...
HDC與CDC相互轉換
首先說一下什麼是dc 裝置描述表 windows應用程式通過為指定裝置 螢幕,印表機等 建立乙個裝置描述表 device context,dc 在dc表示的邏輯意義的 畫布 上進行圖形的繪製。dc是一種包含裝置資訊的資料結構,它包含了物理裝置所需的各種狀態資訊 win32程式在繪製圖形之前需要獲取d...