XOR 모드는 두 번 그리면 원래 상태로 돌아가기 때문에 선택 영역을 지우고 다시 그리기.
과정
프로젝트 - 클래스마법사 - 클래스 이름 : (해당클래스Dlg) - 메시지
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_MOUSEMOVE
추가.
해당클래스.h 에
CPoint m_ptStart;
CPoint m_ptEnd;
bool m_bDragging;
추가.
해당클래스.cpp에
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_ptStart = point;
m_ptEnd = point; //이게 없으면 최초 클릭시 좌표(0,0)에서 사각형 나옴 ㅎ
m_bDragging = true;
SetCapture();
}
void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
if (m_bDragging)
{
CClientDC dc(this);
dc.SetROP2(R2_NOTXORPEN); // 이전 사각형을 지움
dc.Rectangle(CRect(m_ptStart, m_ptEnd)); // 새로운 사각형을 그림
m_ptEnd = point;
dc.Rectangle(CRect(m_ptStart, m_ptEnd));
}
CView::OnMouseMove(nFlags, point);
}
void CMyView::OnLButtonUp(UINT nFlags, CPoint point)
{
if (m_bDragging)
{
CClientDC dc(this);
dc.SetROP2(R2_NOTXORPEN);
// 마지막 사각형을 지움
dc.Rectangle(CRect(m_ptStart, m_ptEnd));
m_ptEnd = point;
m_bDragging = false;
ReleaseCapture();
Invalidate(FALSE);
}
CView::OnLButtonUp(nFlags, point);
}
//와 진짜 성의없게 적었다... ㅈㅅ;
'MFC' 카테고리의 다른 글
[MFC] 외부파일 가져오기 (0) | 2024.07.21 |
---|---|
[MFC]다이얼로그 배경색 변경 (0) | 2024.07.18 |
Visual studio에 OpenCV 연동하기 (0) | 2024.06.20 |
MFC_ & 는 왜 사용할까?(&연산자) (0) | 2024.05.24 |
MFC_서버(Server), 클라이언트(Client), 소켓(Socket)의 기본 개념과 예제. (0) | 2024.05.24 |