1. 程式人生 > >VC中CDC與HDC的區別以及二者之間的轉換

VC中CDC與HDC的區別以及二者之間的轉換

CDC是MFC的DC的一個類  HDC是DC的控制代碼,API中的一個類似指標的資料型別.  MFC類的字首都是C開頭的  H開頭的大多數是控制代碼  這是為了助記,是程式設計讀\寫程式碼的好的習慣.  CDC中所有MFC的DC的基類.常用的CClientDC dc(this);就是CDC的子類(或稱派生類).  CDC等裝置上下分類,都含有一個類的成員變數:m_nHdc;即HDC型別的控制代碼.  記住下面的一句話,會有助於你的理解.  MFC的類,是在用window API語句開發出來的有一定功能的小程式.(也可稱為類).使用它的預設方法,就是,記住它的名字與引數(可以用筆記,代替腦記).  如果將window api比做組合語言  那麼MFC就相當於Basic語言. cdc是裝置描述表的基類,clientDC指代客戶區的裝置描述表,PaintDC只用於OnPaint()函式中 CDC是MFC的DC的一個類  HDC是DC的控制代碼,API中的一個類似指標的資料型別.  MFC類的字首都是C開頭的  H開頭的大多數是控制代碼  這是為了助記,是程式設計讀\寫程式碼的好的習慣.  CDC中所有MFC的DC的基類.常用的CClientDC dc(this);就是CDC的子類(或稱派生類).  CDC等裝置上下分類,都含有一個類的成員變數:m_nHdc;即HDC型別的控制代碼.  記住下面的一句話,會有助於你的理解.  MFC的類,是在用window API語句開發出來的有一定功能的小程式.(也可稱為類).使用它的預設方法,就是,記住它的名字與引數(可以用筆記,代替腦記).  如果將window api比做組合語言  那麼MFC就相當於Basic語言. HDC是WINDOWS的一種資料型別,是裝置描述控制代碼。      而CDC是MFC裡的一個類,它封裝了幾乎所有的關於      HDC的操作。      也可以這樣說,HDC定義的變數指向一塊記憶體,這塊      記憶體用來描述一個裝置的相關的內容,所以也可以      認為HDC定義的是一個指標;而CDC類定義一個物件,      這個物件擁有HDC定義的一個裝置描述表,同時也包      含與HDC相關的操作的函式。      這與HPEN和CPen,POINT與CPoint之間的差別是一樣      的。 CDC 到HDC 的轉化: 2007-05-09 12:04 方法一: 此方法在裝置結束時不會銷燬原來的資源(即:hDC,hBitmap) CDC *pDC = CDC::FromHandle(hDC); CBitmap *pBitmap = CBitmap::FromHandle(hBitmap); 方法二: 此方法在裝置結束時會銷燬原來的資源(即:hDC,hBitmap) CDC dc; dc.Attach(hDC); CBitmap bit; bit.Attach(hBitmap); 在結束的時候加dc.detach()也不會銷燬原來資源 HDC   hdc;      CDC   cdc;      cdc到hdc      hdc   =   cdc.GetSafeHdc();      hdc到cdc      cdc.Attach(hdc); 回覆於 2004-04-08 17:46:03 得分 20 HDC   hdc;      CDC   cdc;      cdc到hdc      hdc   =   cdc.GetSafeHdc();      hdc到cdc      cdc.Attach(hdc)    回覆於 2004-04-08 17:49:14 得分 15 CDC   是MFC中的類      而HDC是Handle      使用      HDC   GetDC() 回覆於 2004-04-08 17:51:49 得分 0  CDC   cdc;      HDC   hDC   =   cdc.m_hDC 回覆於 2004-04-08 17:54:20 得分 20 CDC   dc;      HDC   hDC   =   dc.m_hDC      dc.FromHandle(hDC); 回覆於 2004-04-08 18:01:51 得分 10 CDC   to   hdc      用成員變數m_hDC      hdc   to   CDC      用FromHandle 回覆於 2004-04-08 18:02:47 得分 10 dc.FromHandle(hDC)產生一個dc,但是是臨時的,mfc不保證系統在什麼時候刪除dc.      dc.Attach(hDC)是永久的,直到這個dc的生命正常結束。 回覆於 2004-04-08 18:05:21 得分 5 以上的都很對。你就查詢替換。將所有的(hdc,替換為pdc->(當然。前面宣告個      pdc就可以了。