VC++中獲取DC的四種方法

b3p7 9年前發布 | 2K 次閱讀 C/C++

一:

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);

 本文由用戶 b3p7 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!