孙鑫MFC第四课学习笔记

 

一. 画线条的四种方法:

第一种

hdc=::GetDC(m_hWnd);
 MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
 LineTo(hdc,point.x,point.y);
 ::ReleaseDC(m_hWnd,hdc);

第二种

CDC *pDC=GetDC();
 pDC->MoveTo(m_ptOrigin);
 pDC->LineTo(point);
 ReleaseDC(pDC);

第三种

CClientDC dc(this);
 dc.MoveTo(m_ptOrigin);
 dc.LineTo(point);

第四种

CWindowDC dc(this);
 dc.MoveTo(m_ptOrigin);
 dc.LineTo(point);

其中前两种需要使用GetDC和ReleaseDC,后两种因为封装的CClientDC和CWindowDC类中的构造和析构函数完成了这两项内容,因此不需要get和release

前三种对于Frame框架只能访问其客户区,不能访问其菲客户区,但是第四种客户区和非客户区都可以访问

孙鑫MFC第四课学习笔记_第1张图片

二 获取桌面窗口的句柄函数GetDesktopWindow()

三 画笔的使用

CPen pen(PS_DOT,1,RGB(0,255,0));  //初始化画笔
 CClientDC dc(this);
 CPen *pOldPen=dc.SelectObject(&pen); //更改默认的画笔颜色为所设置的画笔颜色,返回值为先前使用的,注意在使用完之后需要返回到之前的设置
 dc.MoveTo(m_ptOrigin);
 dc.LineTo(point);
 dc.SelectObject(pOldPen); //返回之前的设置,以便不影响其他程序的使用

画刷:

//CBrush brush(RGB(255,0,0));//设置画刷填充颜色

*CBitmap bitmap;
 bitmap.LoadBitmap(IDB_BITMAP1); 
 CBrush brush(&bitmap);//使用位图填充画刷
 CClientDC dc(this);
 dc.FillRect(CRect(m_ptOrigin,point),&brush);

设置无填充画刷:

CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//设置画无填充颜色
 CBrush *pOldBrush=dc.SelectObject(pBrush);
 dc.Rectangle(CRect(m_ptOrigin,point));
 dc.SelectObject(pOldBrush);

你可能感兴趣的:(mfc)