闁衡偓閹増顥� (0) +1 閻犙嶆嫹 (0) +1 闂婎亷鎷� (0) +1
闁衡偓閹増顥戦柟瀛樺姇婵拷闁哄被鍎冲﹢鍛村绩閹増顥�>>

正在阅读:在视图中同步显示鼠标的位置在视图中同步显示鼠标的位置

2004-06-25 09:53 出处:CSDN 作者:happyparrot 责任编辑:linjixiong


coordString---坐标字符串

drawPt--绘制起点坐标
void CDrawMouseView::DrawCoord(CDC* pDC,CString& coordString,CPoint drawPt)
{
 if(m_StoreBmp.GetSafeHandle())//有位图才画
 {
  drawPt.Offset(OFF_X,OFF_Y);
  CRect rect(drawPt,CSize(m_nCoordStrLen,WORD_HEIGHT));
  pDC->SetBkMode(TRANSPARENT);//设置透明背景
  COLORREF crf = pDC->SetTextColor(TEXT_COLOR);
  pDC->DrawText(coordString,rect,DT_CENTER);
  pDC->SetTextColor(crf);
 }
}

//擦除上次的坐标
void CDrawMouseView::DoRubberCoord(CDC* pDC,CPoint showPt)
{
 if(m_StoreBmp.GetSafeHandle())
 {
  m_StoreDC.SelectObject(&m_StoreBmp);
  pDC->BitBlt(showPt.x+OFF_X,showPt.y+OFF_Y,m_nCoordStrLen,WORD_HEIGHT,&m_StoreDC,0,0,SRCCOPY);
  m_StoreDC.DeleteDC();
  m_StoreBmp.DeleteObject();
 }
}
//鼠标移动事件
void CDrawMouseView::OnMouseMove(UINT nFlags, CPoint point)
{
 CDC* pDC = GetDC();
 if(!m_bStart)
  m_bStart = true;
 else
  DoRubberCoord(pDC,m_OldPt);//当不是第一次移动鼠标时才需要先擦除上次的坐标
 CString str;
 str.Format("[%d,%d]",point.x,point.y);
 m_nCoordStrLen=str.GetLength()*WORD_WIDTH;
 m_OldPt = point;
 CopyBitmap(pDC,point);
 DrawCoord(pDC,str,point);
 ReleaseDC(pDC);
}


【编者注】本文所用程序在VC6.0下编译运行正确。如果大家有不同的见解和看法,欢迎讨论。


察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
闁归潧顑嗗┃鈧悹浣告健濡拷闁搞儳鍋涢崺灞俱亜閸洖鍔�