我的家園

          我的家園



          CDC是MFC的DC的一個(gè)類(lèi) 
          HDC是DC的句柄,API中的一個(gè)類(lèi)似指針的數(shù)據(jù)類(lèi)型. 
          MFC類(lèi)的前綴都是C開(kāi)頭的 
          H開(kāi)頭的大多數(shù)是句柄 
          這是為了助記,是編程讀\寫(xiě)代碼的好的習(xí)慣. 
          CDC中所有MFC的DC的基類(lèi).常用的CClientDC dc(this);就是CDC的子類(lèi)(或稱(chēng)派生類(lèi)). 
          CDC等設(shè)備上下分類(lèi),都含有一個(gè)類(lèi)的成員變量:m_nHdc;即HDC類(lèi)型的句柄. 
          記住下面的一句話(huà),會(huì)有助于你的理解. 
          MFC的類(lèi),是在用window API語(yǔ)句開(kāi)發(fā)出來(lái)的有一定功能的小程序.(也可稱(chēng)為類(lèi)).使用它的默認(rèn)方法,就是,記住它的名字與參數(shù)(可以用筆記,代替腦記). 
          如果將window api比做匯編語(yǔ)言 
          那么MFC就相當(dāng)于Basic語(yǔ)言.
          cdc是設(shè)備描述表的基類(lèi),clientDC指代客戶(hù)區(qū)的設(shè)備描述表,PaintDC只用于OnPaint()函數(shù)中


          CDC是MFC的DC的一個(gè)類(lèi) 
          HDC是DC的句柄,API中的一個(gè)類(lèi)似指針的數(shù)據(jù)類(lèi)型. 
          MFC類(lèi)的前綴都是C開(kāi)頭的 
          H開(kāi)頭的大多數(shù)是句柄 
          這是為了助記,是編程讀\寫(xiě)代碼的好的習(xí)慣. 
          CDC中所有MFC的DC的基類(lèi).常用的CClientDC dc(this);就是CDC的子類(lèi)(或稱(chēng)派生類(lèi)). 
          CDC等設(shè)備上下分類(lèi),都含有一個(gè)類(lèi)的成員變量:m_nHdc;即HDC類(lèi)型的句柄. 
          記住下面的一句話(huà),會(huì)有助于你的理解. 
          MFC的類(lèi),是在用window API語(yǔ)句開(kāi)發(fā)出來(lái)的有一定功能的小程序.(也可稱(chēng)為類(lèi)).使用它的默認(rèn)方法,就是,記住它的名字與參數(shù)(可以用筆記,代替腦記). 
          如果將window api比做匯編語(yǔ)言 
          那么MFC就相當(dāng)于Basic語(yǔ)言.


          HDC是WINDOWS的一種數(shù)據(jù)類(lèi)型,是設(shè)備描述句柄。   
            而CDC是MFC里的一個(gè)類(lèi),它封裝了幾乎所有的關(guān)于   
            HDC的操作。   
            也可以這樣說(shuō),HDC定義的變量指向一塊內(nèi)存,這塊   
            內(nèi)存用來(lái)描述一個(gè)設(shè)備的相關(guān)的內(nèi)容,所以也可以   
            認(rèn)為HDC定義的是一個(gè)指針;而CDC類(lèi)定義一個(gè)對(duì)象,   
            這個(gè)對(duì)象擁有HDC定義的一個(gè)設(shè)備描述表,同時(shí)也包   
            含與HDC相關(guān)的操作的函數(shù)。   
            這與HPEN和CPen,POINT與CPoint之間的差別是一樣   
            的。

          CDC 到HDC 的轉(zhuǎn)化:

          方法一: 此方法在設(shè)備結(jié)束時(shí)不會(huì)銷(xiāo)毀原來(lái)的資源(即:hDC,hBitmap)
          CDC *pDC = CDC::FromHandle(hDC);
          CBitmap *pBitmap = CBitmap::FromHandle(hBitmap);

          方法二: 此方法在設(shè)備結(jié)束時(shí)會(huì)銷(xiāo)毀原來(lái)的資源(即:hDC,hBitmap)
          CDC dc;
          dc.Attach(hDC);
          CBitmap bit;
          bit.Attach(hBitmap);

          在結(jié)束的時(shí)候加dc.detach()也不會(huì)銷(xiāo)毀原來(lái)資源

          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中的類(lèi)   
            而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)產(chǎn)生一個(gè)dc,但是是臨時(shí)的,mfc不保證系統(tǒng)在什么時(shí)候刪除dc.   
            dc.Attach(hDC)是永久的,直到這個(gè)dc的生命正常結(jié)束。

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


          轉(zhuǎn)自:http://blog.sina.com.cn/s/blog_523491650100gwii.html
          作者:zhmxy555 發(fā)表于2012-4-10 1:55:06 原文鏈接
          閱讀:145 評(píng)論:0 查看評(píng)論

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 永兴县| 三门县| 阳高县| 渭南市| 孟州市| 韶山市| 绥芬河市| 德惠市| 滦南县| 耒阳市| 景洪市| 东丽区| 咸宁市| 柘城县| 西安市| 曲靖市| 张掖市| 固阳县| 古交市| 德惠市| 张家港市| 镇赉县| 嫩江县| 中牟县| 广东省| 东乌珠穆沁旗| 子长县| 垫江县| 沙坪坝区| 新兴县| 扬州市| 皮山县| 黑水县| 宿松县| 延安市| 准格尔旗| 马尔康县| 女性| 邵武市| 陆良县| 阿克|