VC++中獲取DC的四種方法
一:
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); </pre>
另一些代碼:
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);