1、在CXXXView.h中
DECLARE_MESSAGE_MAP()前声明函数
void OnLButtonDown(UNIT nFlags,CPoint point);
2、BEGIN_MESSAGE-----END_MESSAGE之间增加消息响应宏
ON_WN_LBUTTONDOWN()
通过宏把消息响应和消息响应函数关联起来
3、在源文件中增加函数定义:
void CXXXView::OnLButtonDown(UNIT nFlags,CPoint point)
{
MessageBox(" ");
CView::OnLButtonDown(nFlags,point);
}
------------------------------------------------------------------------------------------------------------------------------------------------------
画线
void CXXXView::OnLButtonDown(UNIT nFlags,CPoint point)
{
m_ptOrigin=point; //m_ptOrigin成员变量已经声明
CView::OnLButtonDown(nFlags,point);
}
void CXXXView::OnLButtonDown(UNIT nFlags,CPoint point)
{
CClientDc dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
CView::OnLButtonDown(nFlags,point);
}
-----------------------------------------------------------------------------------------------------------------------------------------------------
画笔 有颜色
CPen pen(PS_SOLID, 1, RGB(255, 0, 0));
CClientDC dc(this);
CPen *pOldPen = dc.SelectObject(&pen);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);//使用SelectObject一定记得最后SelectObject前面
CView::OnLButtonDown(nFlags,point);
------------------------------------------------------------------------------------------------------------------------------------------------------
画刷
CBRUSH
CBrush brush(RGB(255, 0, 0));
CClientDC dc(this);
dc.FillRect(CRect(m_ptOrigin,point),&brush);
-----------------------------------------------------------------------------------------------------------------------------------------------------
位图
CBitmap
加载位图
CBitmao::LoadBitmap
BOOL LoadBitmap(UNIT nIDResourse);
在资源视图中添加位图
-------------------------------------------------------------------------------------------------------------------------------------------------------
透明画刷
CClientDC dc(this);
CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//句柄到指针转换
CBrush *pOldBrush = dc.SelectObject(pBrush);
dc.Rectangle(CRect(m_ptOrigin, point));
dc.SelectObject(pOldBrush);
CView::OnLButtonDown(nFlags,point);
-------------------------------------------------------------------------------------------------------------------------------------------------------
连续画图
在View类中增加MouseMove消息、成员变量(m_pOld) 初始化为FALSE
在按下中定义为TRUE
在抬起中定义为FALSE
增加判断
if(成员变量==TRUE)
{
CClientDC dc(this);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
m_ptOrigin=point;
}
画出扇形
CClientDC dc(this);
CPen pen(PS_DASH, 1, RGB(255, 0, 0));
CPen *pOldPen = dc.SelectObject(&pen);
if (m_bApplication2View == TRUE)
{
dc.MoveTo(m_ptOrigin);
//CClientDC dc(this);
dc.LineTo(m_pOld);
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
//m_ptOrigin = point;
m_pOld = point;
}
dc.SelectObject(pOldPen);
CView::OnMouseMove(nFlags, point);