一:
HDC hdc;
hdc=::GetDc(m_hWnd);加兩個冒號表示我們用的是全局SDK的函數,否則表示我們有的是CWND中的函數
::ReleaseDc(m_hWnd,hdc);
二:
CDC *pdc=GetDC();
ReleaseDC(pdc);
三:
CClientDC dc(this);不需要我們去釋放,自己會去釋放;
四:
CWindowDC dc(this);阤不需要我們去釋放,好處是可以訪問整個屏幕區域;
關於dc操作的一段代碼:
CPen pen(PS_SOLID,1,RGB(255,0,0));
CPen *penold;
penold=dc->SelectObject(&pen);
dc->SelectObject(penold);
//設置字體
CFont font;
VERIFY(font.CreateFont(
12, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
"Arial")); // lpszFacename
dc->SelectObject(&font);
dc->SetBkMode(TRANSPARENT);
dc->SetBkColor(COLORREF(RGB(0,0,0)));
dc->SetTextColor(COLORREF(RGB(0,123,0)));
dc->TextOut(TargetPoint.x+5,TargetPoint.y+5,ModeCode);
另一些代碼:
CClientDC dc(pStatusBar);//pStatusBar是一個狀態條的窗口
CFont *pOldFont = dc.SelectObject(pStatusBar->GetFont());
CSize size = dc.GetTextExtent(m_strMessage); // Length of text,獲取了字符串的寬度和高度(在目前這種字體下)
int margin = dc.GetTextExtent(_T(" ")).cx * 2; // Text margin,一個空格的寬度乘以2
dc.SelectObject(pOldFont);