いくつかの直線を描く方法-孫鑫C++ノート

9899 ワード

// HDC   

CPoint m_ptOrigin ;

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)

{

  m_ptOrigin = point;

  CView::OnLButtonDown(nFlags, point);

}

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)

{

  HDC hdc;

  hdc = ::GetDC(m_hWnd);

  MoveToEx(hdc, m_ptOrigin.x, m_ptOrigin.y, NULL);

  LineTo(hdc, point.x, point.y);

  ::ReleaseDC(m_hWnd, hdc);



  CView::OnLButtonUp(nFlags, point);

}



// CDC   

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)

{

  m_ptOrigin = point;

  CView::OnLButtonDown(nFlags, point);

}

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)

{

  CDC *pDC = GetDC();

  pDC->MoveTo(m_ptOrigin);

  pDC->LineTo(point);

  ReleaseDC(pDC);



  CView::OnLButtonUp(nFlags, point);

}



// CClientDC、CWindowDC   

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)

{

  m_ptOrigin = point;

  CView::OnLButtonDown(nFlags, point);

}

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)

{

  CClientDC dc(this);          //     

  CClientDC dc(GetParent());      //     +   

  CWindowDC dc(this);          //     

  CWindowDC dc(GetParent());  //     +   +   +   

  CWindowDC dc(GetDesktopWindow());  //        

  dc.MoveTo(m_ptOrigin);

  dc.LineTo(point);



  CView::OnLButtonUp(nFlags, point);

}



//      

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)

{

  m_ptOrigin = point;

  CView::OnLButtonDown(nFlags, point);

}

void CDrawView::OnLButtonUp(UINT nFlags, CPoint 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);



  CView::OnLButtonUp(nFlags, point);

}



//  

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)

{

  m_ptOrigin = point;

  CView::OnLButtonDown(nFlags, point);

}

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)

{

  CBrush brush(RGB(255, 0, 0));

  CClientDC dc(this);

  dc.FillRect(CRect(m_ptOrigin, point), &brush);



  CView::OnLButtonUp(nFlags, point);

}

//    

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)

{

  m_ptOrigin = point;

  CView::OnLButtonDown(nFlags, point);

}

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)

{

  CBitmap bitmap;

  bitmap.LoadBitmap(IDB_BITMAP1);

  CBrush brush(&bitmap);

  CClientDC dc(this);

  dc.FillRect(CRect(m_ptOrigin, point), &brush);



  CView::OnLButtonUp(nFlags, point);

}

//    

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)

{

  m_ptOrigin = point;

  CView::OnLButtonDown(nFlags, point);

}

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)

{

  CClientDC dc(this);

  // dc.Rectangle(CRect(m_ptOrigin, point)); //   

  CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));

  CBrush *pOldBrush = dc.SelectObject(pBrush);

  dc.Rectangle(CRect(m_ptOrigin, point));

  dc.SelectObject(pOldBrush);    //  



  CView::OnLButtonUp(nFlags, point);

}

//     

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)

{

  m_ptOrigin = point;

  m_bDraw = TRUE;

  CView::OnLButtonDown(nFlags, point);

}

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)

{

  m_bDraw = FALSE;

  CView::OnLButtonUp(nFlags, point);

}

void CDrawView::OnMouseMove(UINT nFlags, CPoint point)

{

  CClientDC dc(this);

  CPen pen(PS_SOLID, 1, RGB(255, 0, 0));

  CPen *pOldPen = dc.SelectObject(&pen);

  if(m_bDraw == TRUE)\

  {

    dc.MoveTo(m_ptOrigin);

    dc.LineTo(point);

    m_ptOrigin = point;

  }

  dc.SelectObject(pOldPen);

  

  CView::OnMouseMove(nFlags, point);

}



//   

CPoint m_ptOld;

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)

{

  m_ptOrigin = m_ptOld = point;

  m_bDraw = TRUE;

  CView::OnLButtonDown(nFlags, point);

}

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)

{

  m_bDraw = FALSE;

  CView::OnLButtonUp(nFlags, point);

}

void CDrawView::OnMouseMove(UINT nFlags, CPoint point)

{

  CClientDC dc(this);

  CPen pen(PS_SOLID, 1, RGB(255, 0, 0));

  CPen *pOldPen = dc.SelectObject(&pen);

  if(m_bDraw == TRUE)\

  {

    dc.MoveTo(m_ptOrigin);

    dc.LineTo(m_ptOld);

    // dc.MoveTo(m_ptOrigin); //     

    dc.MoveTo(m_ptOld);    //    

    dc.LineTo(point);

    m_ptOld = point;

  }

  dc.SelectObject(pOldPen);



  CView::OnMouseMove(nFlags, point);

}