我的家園

          我的家園



          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 的轉化:

          方法一: 此方法在設備結束時不會銷毀原來的資源(即: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);



          tip1:
          HDC   hdc;   
            CDC   cdc;   
            cdc到hdc   
            hdc   =   cdc.GetSafeHdc();   
            hdc到cdc   
            cdc.Attach(hdc)   
              
              
          tip2:

          CDC   是MFC中的類   
            而HDC是Handle   
            使用   
            HDC   GetDC()

          tip3:

          CDC   cdc;   
            HDC   hDC   =   cdc.m_hDC

          tip4:

          CDC   dc;   
            HDC   hDC   =   dc.m_hDC   
            dc.FromHandle(hDC);

          tip5:

          CDC   to   hdc   
            用成員變量m_hDC   
            hdc   to   CDC   
            用FromHandle

          tip6:

          dc.FromHandle(hDC)產生一個dc,但是是臨時的,mfc不保證系統在什么時候刪除dc.   
            dc.Attach(hDC)是永久的,直到這個dc的生命正常結束。

          tip7:
          查找替換。將所有的(hdc,替換為pdc->(當然。前面聲明個   
            pdc就可以了。


          轉自:http://blog.sina.com.cn/s/blog_523491650100gwii.html
          作者:zhmxy555 發表于2012-4-10 1:55:06 原文鏈接
          閱讀:145 評論:0 查看評論

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 博湖县| 烟台市| 望城县| 新营市| 龙陵县| 泉州市| 左贡县| 沁水县| 永修县| 龙南县| 东乡县| 长丰县| 黄梅县| 西平县| 天等县| 滕州市| 珲春市| 柳州市| 大洼县| 高碑店市| 贡山| 长顺县| 新干县| 务川| 黄平县| 固镇县| 高清| 沂南县| 闻喜县| 江永县| 宁强县| 秦皇岛市| 兰考县| 酒泉市| 华安县| 平阴县| 大姚县| 弥勒县| 平武县| 望谟县| 潮州市|