永发信息网

关于VC中鼠标按下和鼠标松开的消息问题

答案:3  悬赏:0  手机版
解决时间 2021-04-05 15:37
  • 提问者网友:我一贱你就笑
  • 2021-04-05 05:59
比如说一个对话框上有多个按钮,我想捕捉一个按下按钮的消息和松开按钮的消息,怎么办。说方法就OK了.
最佳答案
  • 五星知识达人网友:荒野風
  • 2021-04-05 06:28
这个...有没有具体的相关函数就不清楚了,不过方法倒是有,或许比较麻烦...
每个按钮都有个CRect,这样你鼠标按下的时候会有一个坐标,判断这个坐标是否在这个Rect中就可以了。同理,鼠标松开的时候也有一个坐标。
需要注意的是坐标转换的问题。
还有,鼠标消息响应函数就是LButtonDown什么的...
全部回答
  • 1楼网友:酒安江南
  • 2021-04-05 08:13
画线简单,关键是这种橡皮条的拖拽效果,不是那么简单,我给你view类的代码,自己看吧,关键部分是设置绘图的反转色 class MyView:public CView { CClientDC* DragDC; //拖拽线段时使用的DC CPoint p1,p2; HCURSOR hCursor; //光标的句柄 }; void MyView::OnLButtonDown(UINT nFlags,CPoint point) { CView::OnLButtonDown(nFlags,point); if(DragDC) { delete DragDC; DragDC=NULL; } DragDC=new CClientDC(this); DragDC->SetROP2(R2_NOT); //把画线方式设为NOT p1=p2=point; DragDC->MoveTo(p1); //画线 DragDC->LineTo(p2); SetCapture(); //捕捉鼠标 } void MyView::OnMouseMove(UINT nFlags, CPoint point) { CView::OnMouseMove(nFlags,point); if(DragDC) { DragDC->MoveTo(p1); DragDC->LineTo(p2); //删除旧线段 p2=point; DragDC->MoveTo(p1); DragDC->LineTo(p2); //画出新线段 } } void MyView::OnLButtonUp(UINT nFlags, CPoint point) { CView::OnLButtonUp(nFlags,point); if(DragDC) { DragDC->MoveTo(p1); DragDC->LineTo(p2); //删除旧线段 p2=point; DragDC->SetROP2(R2_COPYPEN); DragDC->MoveTo(p1); DragDC->LineTo(p2); //画出新线段 delete DragDC; DragDC=NULL; ReleaseCapture(); //放开鼠标 //把线段加入列表中 ((MyDocument*)GetDocument())->LineList.AddTail(LineSegment(p1.x,p1.y,p2.x,p2.y)); GetDocument()->SetModifiedFlag(TRUE); //设置修改标志 } }
  • 2楼网友:不想翻身的咸鱼
  • 2021-04-05 07:29
分都不给小气
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯