a,鼠标按下和抬起
void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 m_myPoint = point; CView::OnLButtonDown(nFlags, point); }
void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CClientDC dc(this); dc.MoveTo(m_myPoint); dc.LineTo(point); CView::OnLButtonUp(nFlags, point); }
b,CPaintDC 只能在OnPaint 中使用
CClientDC 在任何地方都可以使用
c,起点和终点
MoveTo 移动当前位置
LineTo 从当前位置到一点画直线,但不包括那个点
d,选择所属类 -> 右击 -> 添加变量,这种方法会自动帮你初始化变量
鼠标移动事件
// CDrawView 消息处理程序 void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 m_myPoint = point; m_isPressed = true; CView::OnLButtonDown(nFlags, point); } void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 #if 0 CClientDC dc(this); dc.MoveTo(m_myPoint); dc.LineTo(point); #endif m_isPressed = false; CView::OnLButtonUp(nFlags, point); } void CDrawView::OnMouseMove(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 if (m_isPressed) { CClientDC dc(this); dc.MoveTo(m_myPoint); dc.LineTo(point); // 终点作为起点 m_myPoint = point; } CView::OnMouseMove(nFlags, point); }
void CDrawView::OnDraw(CDC* pDC) { CDrawDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 // 画圆 /* 参数: x1 指定椭圆外接矩形左上角的X逻辑坐标。 y1 指定椭圆外接矩形左上角的Y逻辑坐标。 x2 指定椭圆外接矩形右下角的X逻辑坐标。 y2 指定椭圆外接矩形右下角的Y逻辑坐标。 */ pDC->Ellipse(20,20,120,120); // 画刷 CBrush brush(RGB(255, 0, 0)); pDC->SelectObject(&brush); pDC->Ellipse(20, 20, 120, 120); }
3,画刷和画笔的使用
4,文本编程
5,菜单
原文:https://www.cnblogs.com/xiangtingshen/p/10802258.html