关于VC中鼠标按下和鼠标松开的消息问题
答案:3 悬赏:0 手机版
解决时间 2021-04-05 15:37
- 提问者网友:我一贱你就笑
- 2021-04-05 05:59
比如说一个对话框上有多个按钮,我想捕捉一个按下按钮的消息和松开按钮的消息,怎么办。说方法就OK了.
最佳答案
- 五星知识达人网友:荒野風
- 2021-04-05 06:28
这个...有没有具体的相关函数就不清楚了,不过方法倒是有,或许比较麻烦...
每个按钮都有个CRect,这样你鼠标按下的时候会有一个坐标,判断这个坐标是否在这个Rect中就可以了。同理,鼠标松开的时候也有一个坐标。
需要注意的是坐标转换的问题。
还有,鼠标消息响应函数就是LButtonDown什么的...
每个按钮都有个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
分都不给小气
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯