MFC编程 --鼠标交互输入

建好MFC工程

如何新建MFC工程

鼠标输入缓存

CSanJiaoFenGeView类 宏定义 #define N 64
CSanJiaoFenGeView类添加公共成员变量

CClientDC *m_pDC;
int m_pNumbers;        // polygon input buffer
CPoint m_pAccord[N], m_mousePoint;

CSanJiaoFenGeView类构造函数初始化m_pNumbers。

          CSanJiaoFenGeView::CSanJiaoFenGeView()
           {
               m_pNumbers = 0;
           }

鼠标交互控制

重写CCgQBFillPolyView类的鼠标消息处理函数。
弹出类向导对话窗口,添加WM_LBUTTONDOWN、WM_LBUTTONDBLCLK、WM_MOUSEMOVE 和WM_CREATE 四个
消息处理函数
在这里插入图片描述
View类模板的四个消息处理函数中添加如下代码。

void CSanJiaoFenGeView::OnLButtonDown(UINT nFlags, CPoint point)
{
	if (m_pNumbers < N) {
		m_pAccord[m_pNumbers] = point;
		m_pNumbers++;

		m_mousePoint = point;
	}

	CView::OnLButtonDown(nFlags, point);
}

void CSanJiaoFenGeView::OnMouseMove(UINT nFlags, CPoint point)
{
	if ( m_pNumbers) {

		m_pDC->SetROP2(2);
		m_pDC->MoveTo(m_pAccord[m_pNumbers - 1]);
		m_pDC->LineTo(m_mousePoint);

		m_mousePoint = point;
		m_pDC->MoveTo(m_pAccord[m_pNumbers - 1]);
		m_pDC->LineTo(m_mousePoint);
	}

	CView::OnMouseMove(nFlags, point);
}


int CSanJiaoFenGeView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;

	m_pDC = new CClientDC(this);

	return 0;
}


void CSanJiaoFenGeView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
	m_pDC->MoveTo(m_pAccord[m_pNumbers - 1]);
	m_pDC->LineTo(m_pAccord[0]);

	m_pAccord[m_pNumbers] = m_pAccord[0];
	m_pNumbers++;

	m_pNumbers = 0;

	CView::OnLButtonDblClk(nFlags, point);
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值