1.CDC、CDCHandle只是CDCT<typename T>模板類的實例化,區(qū)別只是在析構時,一個會釋放資源,一個不會。
typedef CDCT<false>?? CDCHandle;
typedef CDCT<true>??? CDC;
2.CMemDC從CDC繼承,除了構造函數與析構函數外沒有其它成員函數
3.CDC的成員變量只有一個:m_hDC
CMemDC有自己的更多的成員變量,同時還可以使用CDC的m_hDC:
?? CDCHandle???? m_dc;????????? // 屏幕的DC Owner DC
?? CBitmap?????? m_bitmap;????? // Offscreen bitmap
?? CBitmapHandle m_hOldBitmap;? // Originally selected bitmap
?? RECT????????? m_rc;????????? // Rectangle of drawing area
4.實際使用:
(1)先將屏幕的hdc作為CMemDC的構造參數
void CODButtonImpl::DrawItem ( LPDRAWITEMSTRUCT lpdis )
{
?RECT rc = lpdis->rcItem;
?CDCHandle hdc = lpdis->hDC;
?CMemDC dc( lpdis->hDC, &rc,RGB(255,0,0));
? ....
}
(2)將CMemDC轉成換CDC(不轉也無所謂,凡正CMemDC沒有成員函數供你使用),然后用CDC的成員函數對m_hDC進行繪圖操作,注意你是在CDC類的m_hDC中繪圖。
??dc.SetPixel(CPoint(10,6),RGB(251,200,99));
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
