Skip to content

Instantly share code, notes, and snippets.

@sungyongchoi
Created December 14, 2016 07:06
Show Gist options
  • Save sungyongchoi/26eb3818dbc2382b3a0d63fdeccbe926 to your computer and use it in GitHub Desktop.
Save sungyongchoi/26eb3818dbc2382b3a0d63fdeccbe926 to your computer and use it in GitHub Desktop.
비주얼 스튜디오 2015, MFC, 마우스 사용하여 선 그리기
// http://stoned.8m.com/Source/MFC/mousedraw.html
// ChildView.h : CChildView 클래스의 인터페이스
//
#pragma once
// CChildView 창
class CChildView : public CWnd
{
// 생성입니다.
public:
CChildView();
// 특성입니다.
public:
CPoint Previous_;
// 작업입니다.
public:
// 재정의입니다.
protected:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
// 구현입니다.
public:
virtual ~CChildView();
// 생성된 메시지 맵 함수
protected:
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
};
// ChildView.cpp : CChildView 클래스의 구현
//
#include "stdafx.h"
#include "MFCApplication10.h"
#include "ChildView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CChildView
CChildView::CChildView()
{
}
CChildView::~CChildView()
{
}
BEGIN_MESSAGE_MAP(CChildView, CWnd)
ON_WM_PAINT()
ON_WM_CREATE()
ON_WM_DESTROY()
ON_WM_MBUTTONDOWN()
ON_WM_MOUSEMOVE()
END_MESSAGE_MAP()
// CChildView 메시지 처리기
BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;
cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW), reinterpret_cast<HBRUSH>(COLOR_WINDOW+1), NULL);
return TRUE;
}
void CChildView::OnPaint()
{
CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트입니다.
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
// 그리기 메시지에 대해서는 CWnd::OnPaint()를 호출하지 마십시오.
}
int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 여기에 특수화된 작성 코드를 추가합니다.
return 0;
}
void CChildView::OnDestroy()
{
CWnd::OnDestroy();
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
}
void CChildView::OnMButtonDown(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
Previous_ = point;
CWnd::OnMButtonDown(nFlags, point);
}
void CChildView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
if ((nFlags & MK_LBUTTON) == MK_LBUTTON)
{
CClientDC dc(this);
dc.MoveTo(Previous_);
dc.LineTo(point);
Previous_ = point;
}
CWnd::OnMouseMove(nFlags, point);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment