高手快来!!!OnLButtonDown问题;我想问怎么样才可以在鼠标按下时不停做某事,弹起时则停止啊!

mysh911 2006-12-07 03:58:16
void Mybutton::OnLButtonDown(UINT nFlags, CPoint point)
// TODO: Add your message handler code here and/or call default
while(false == mouseflag)
{ if (1==data)
{OnUp();//发对应sphereDlg.h里函数OnUp()消息; }
else if(2==data)
{ OnDown();}
else if(3==data)
{ OnLeft();}
else if (4==data)
{ OnRight();}
else if (5==data)
{ OnAutoscanon() ;}
Sleep(2000);
}
CButton::OnLButtonDown(nFlags, point);
}

void Mybutton::OnLButtonUp(UINT nFlags, CPoint point)
{// TODO: Add your message handler code here and/or call default
mouseflag= true;
UpdateData(true);
switch(data){
case 1:
case 2:
case 3:
case 4:
case 5:OnStop();
break;
}
CButton::OnLButtonUp(nFlags, point);
}

问题如题目,我想问怎么样才可以在鼠标按下时不停做某事,弹起时则停止啊?我现在上面的代码如果没有注释掉while 则鼠标左键按下时他响应相应的消息,但是鼠标弹起的时候他没有响应OnLButtonUp的消息;
可能是由于他们是同一个线程里吧.
各位高手有没有什么比较好的解决方法啊?请教我菜鸟一下.谢谢!
...全文
266 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdlous 2006-12-08
  • 打赏
  • 举报
回复
设置标志位,在线程里根据标志位是否自杀线程
实现起来也不会太简单
mysh911 2006-12-07
  • 打赏
  • 举报
回复
哦。刚才不好意思啊。有点惯性思维了.if是只执行一次,while是反复执行啊。呵呵。刚才受到那while影响了.

对了,那个精确度的话怎么样才可以精确啊?就是OnLButtonUp一弹起鼠标左键就停止.那怎么搞啊xdlous(虾螺丝)?谢谢
mysh911 2006-12-07
  • 打赏
  • 举报
回复
呵呵。我在csdn上找到了这问题的解决方法.搞定了回来才看见有这么多热心的高手给我出注意啊。谢谢!!

我现在按下按钮可以不停的发消息了,弹起时可以终止他了.谢谢各位啊!我是把while的语句放在定时器里搞的.不过很奇怪,如果我在定时器用while时则停止不了,改成if就停止了.不知道这是怎么回事?if和while不一样吗?

不过的确会有xdlous(虾螺丝) 说的这问题啊.就是弹起鼠标后他还是要再发一段时间才停止啊.

{xdlous(虾螺丝) ( ) 信誉:100 Blog 2006-12-07 16:19:29 得分: 0
另开一个线程做你要做的,
弹起时断掉那个线程就可以了
SetTimer可能精确度不够}

不过我不知道怎么样再开个线程写啊。我刚用vc没有多久啊。n多不懂啊高手们.
如果可以的话可以给我大致的代码吗?

还有这问题用定时器解决可以参考http://topic.csdn.net/t/20050519/10/4018793.html;里面比较详细.


zhouyan024 2006-12-07
  • 打赏
  • 举报
回复
定义一个BOOL ifdown;在构造函数里添加ifdown = FALSE;判断在OnLButtonUp中判断
if(ifdown)就行了
xyh2007 2006-12-07
  • 打赏
  • 举报
回复
建议开线程
xdlous 2006-12-07
  • 打赏
  • 举报
回复
另开一个线程做你要做的,
弹起时断掉那个线程就可以了
SetTimer可能精确度不够
chg0805 2006-12-07
  • 打赏
  • 举报
回复
可以设置计时器Timer,鼠标点下时启动计时器SetTimer(1,100,NULL),弹起后kill掉它KillTimer(1),在OnTimer中做你的循环操作。
mysh911 2006-12-07
  • 打赏
  • 举报
回复
不知道各位明白我的意思 没?
我的 意思是鼠标左键按下时则循环做某事,鼠标弹起时响应OnLButtonUp里消息;
现在的问题是我加了while循环后后则响应不了鼠标弹起时OnLButtonUp里的消息了!
各位有什么好的办法说下啊。谢谢!!

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧