C++ 我怎样才能使OnLButtonDown()事件中的进程一次又一次地发生,直到我激活按钮为止?

C++ 我怎样才能使OnLButtonDown()事件中的进程一次又一次地发生,直到我激活按钮为止?,c++,visual-c++,mfc,C++,Visual C++,Mfc,到目前为止发生的情况是: 任何一行只发生一次,如果我使用while(1)或while(nFlags==MK_LBUTTON)它会正常工作,但我会崩溃 另一个问题,或者可能是相同的问题是延迟,如果我能够做到的话,可以使用while()和Timer() 我想用Timer()延迟调用函数,但我不能调用OnLButtonDown(),因为我理解它,只有消息可以用参数调用它。记住旧的mousestate,而不是使用while循环 if (oldFlags == MK_LBUTTON &&

到目前为止发生的情况是:

任何一行只发生一次,如果我使用
while(1)
while(nFlags==MK_LBUTTON)
它会正常工作,但我会崩溃

另一个问题,或者可能是相同的问题是延迟,如果我能够做到的话,可以使用
while()
Timer()


我想用
Timer()
延迟调用函数,但我不能调用
OnLButtonDown()
,因为我理解它,只有消息可以用参数调用它。

记住旧的mousestate,而不是使用while循环

if (oldFlags == MK_LBUTTON && nFlags == MK_LBUTTON) 
这样,您就知道用户正在按住按钮,而不是最近才单击它

但是你可以发送WM消息来愚弄你的应用程序,如果你愿意的话,这个按钮已经被按下了。 我真的不能在任何特定的方向上指导你,因为我真的不确定你想要完成什么;P这是我对你的问题所知甚少的最好答案。

OnLButtonDown()
调用
SetTimer()
启动计时器,例如每100毫秒运行一次。然后添加
OnLButtonUp()
并调用
KillTimer()
停止计时器运行。然后,在
OnTimer()
函数中执行您的代码(将
WM_TIMER
添加到消息映射),它将在按住鼠标的同时运行


注意:如果用户在窗口外单击并拖动鼠标,则会调用
OnLButtonDown()
,但不会调用
OnLButtonUp()
,这会使程序认为鼠标按钮被卡住。处理此问题的函数是:与
SetTimer()
同时调用
SetCapture()
,与
KillTimer()
同时调用
ReleaseCapture()
,以便无论鼠标在何处都能持续接收鼠标消息。我建议在MSDN上查找我在回答中提到的所有函数,并阅读它们以了解更多信息。

它不起作用,对我来说无论如何。。。。。。我正在尝试创建喷枪效果,这就是为什么我需要一次又一次地调用lbnckicked函数,直到我停止按下按钮。。。