MFC画图实现实时显示图形轨迹

(1 )在类里定义变量和消息:

bool m_bClickEmpty; //判断是否点击了空白的地方,以实现拖动框选择 

CPoint OldEmptyBegin;//点击空白开始的座标

CPoint NowEmptyEnd;//移动时保存座标

afx_msg void OnMouseMove(UINT nFlags, CPoint point);afx_msg void OnLButtonDown(UINT nFlags, CPoint point);afx_msg void OnLButtonUp(UINT nFlags, CPoint point);

( 2 )在鼠标相关的消息里面写代码:

void XX::OnLButtonDown(UINT nFlags, CPoint point){

       m_bClickEmpty = true;

      OldEmptyBegin = point;

       NowEmptyEnd = point;

}

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

{

     if ( m_bClickEmpty )     {          CClientDC dc(this);

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

          CBrush *POldBrush = dc.SelectObject( pBrush );

          int nOldMode = dc.SetROP2(R2_NOTXORPEN);

          dc.Rectangle( &CRect( OldEmptyBegin, NowEmptyEnd ) );

          dc.Rectangle( &CRect( OldEmptyBegin, point ) );

          NowEmptyEnd = point;

         dc.SelectObject( POldBrush );

         dc.SetROP2( nOldMode );

    }

}

void XX::OnLButtonUp(UINT nFlags, CPoint point){

      if ( m_bClickEmpty )      {           m_bClickEmpty = false;

           CClientDC dc(this);

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

           CBrush *POldBrush = dc.SelectObject( pBrush );

           int nOldMode = dc.SetROP2(R2_NOTXORPEN);

          dc.Rectangle( &CRect( OldEmptyBegin, NowEmptyEnd ) );

          dc.SelectObject( POldBrush );

         dc.SetROP2( nOldMode );

      }}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值