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 &www.cppcns.comn程式設計客棧bsp; 無效區dc,相當於beginpaint, endpaint
cclientdc 客戶區dc,相當於getdc, rel
cwindowdc 整視窗dc, 相當於getwindowdc, releasedc
cdc 任何dc, 相當於createdc, deletedc
四、區別與聯絡
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
本文標題: vc中cdc、hdc、pdc區別與聯絡及相互轉換
本文位址:
VC中 T 與L區別
一說這個話題,肯定涉及ms的字符集,先看ms對 t 其中 text 與 t 一樣 的定義 define t x t x define text x t x 如果定義了 unicode識別符號,那麼乙個稱作 t的巨集就定義如下 define t x l x如果沒有定義 unicode識別符號,則 t巨...
vc中bool與BOOL的區別
bool是微軟定義的typedef int bool。與bool不同,它是乙個三值邏輯,true false error,返回值為大於零的整數為true,0為false,1為error。win32 api中很多返回值為bool的函式都是三值邏輯。比如getmessage bool是標準c 資料型別,...
VC中HDC與CDC的區別
首先說一下什麼是dc 裝置描述表 windows應用程式通過為指定裝置 螢幕,印表機等 建立乙個裝置描述表 device context,dc 在dc表示的邏輯意義的 畫布 上進行圖形的繪製。dc是一種包含裝置資訊的資料結構,它包含了物理裝置所需的各種狀態資訊 win32程式在繪製圖形之前需要獲取d...