본문 바로가기
C & C++/MFC 컨트롤

[MFC 연습] 마우스 드레그 & 드롭

by izen8 2011. 1. 11.
반응형

public:
 CPoint m_ptItemText;
 bool m_bDragFlag;

 //---------------------------------------------------------------------------------

CMouseCombiView::CMouseCombiView()
{
 m_ptItemText = CPoint(10, 30);
 m_bDragFlag = false;
}

 //---------------------------------------------------------------------------------

void CMouseCombiView::OnLButtonDown(UINT nFlags, CPoint point)
{
 if(point.x >= m_ptItemText.x -16 && point.x <= m_ptItemText.x + 16 &&
  m_ptItemText.y >= m_ptItemText.y - 16 && point.y <= m_ptItemText.y +16)
 {
 
  // 클릭했으므로 플래그값 트루로
  m_bDragFlag = true;
  // 윈도우 다시그리기
  RedrawWindow();
 }
 
 CView::OnLButtonDown(nFlags, point);
}

void CMouseCombiView::OnLButtonUp(UINT nFlags, CPoint point)
{
 if(m_bDragFlag)
 {
  m_bDragFlag = false;
  m_ptItemText = point;
  RedrawWindow();
 }

 CView::OnLButtonUp(nFlags, point);
}

void CMouseCombiView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
 // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.

 CView::OnLButtonDblClk(nFlags, point);
}

void CMouseCombiView::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 
 if(m_bDragFlag)
  dc.TextOutW(10, 10, _T(" Drag "));

 else
  dc.TextOutW(10, 10, _T("......"));

 dc.TextOut(m_ptItemText.x, m_ptItemText.y, _T(" 내 컴퓨터 "));
}

void CMouseCombiView::OnMouseMove(UINT nFlags, CPoint point)
{
  if(m_bDragFlag)
 {
  m_ptItemText = point;
  RedrawWindow();
 }
 CView::OnMouseMove(nFlags, point);
}

 //---------------------------------------------------------------------------------

반응형

댓글