怎么让BUTTON在按下的状态下持续触发BN_CLICKED事件,回帖有分

如何让BUTTON在按下的状态下持续触发BN_CLICKED事件,回帖有分
开发环境:VS2008 + VC + MFC
如何让BUTTON在按下的状态下持续触发BN_CLICKED事件,除了使用定时器,还有什么方法?

------解决方案--------------------
while()
{
........
Sleep()
}
可以吗
------解决方案--------------------
按钮按下,创建线程,按钮松开,结束线程。
------解决方案--------------------
PreTranslateMessage(MSG* pMsg)

WM_LBUTTONDOWN
WM_LBUTTONUP

example:
C/C++ code

if (pMsg->message == WM_LBUTTONDOWN)
{
......
}

------解决方案--------------------
你重新CButton类,处理WM_LBUTTONDOWN/WM_LBUTTONUP消息不是更好?
------解决方案--------------------
定时器不就挺好 也挺简单的么!
------解决方案--------------------
定时器不就挺好 也挺简单的么!
------解决方案--------------------
重载按下事件
------解决方案--------------------

------解决方案--------------------
重载按下事件

------解决方案--------------------
是不是可以这样
在按钮消息中检测鼠标是否处于按下状态
如果是就在这个消息中在发送一个按钮消息
如此递归
------解决方案--------------------
探讨
是不是可以这样
在按钮消息中检测鼠标是否处于按下状态
如果是就在这个消息中在发送一个按钮消息
如此递归

------解决方案--------------------
探讨
引用:
是不是可以这样
在按钮消息中检测鼠标是否处于按下状态
如果是就在这个消息中在发送一个按钮消息
如此递归

这么做什么时候才能退出来,光响应这个消息了,你可以试试是不是这种情况.
想退出来,就得在按下状态的消息里设个变量决定是否继续发送按下状态的消息,当按纽弹出时,设这个变量值为禁止继续发送按下状态的消息,这样就可以退出来了
……

------解决方案--------------------
4楼的方法就很好啊
------解决方案--------------------
设一全局变量,按下去设一值,起来的时候设一值,然后在按下去的函数里做循环。
------解决方案--------------------
监听MouseUp消息,只要没有就继续你的down
------解决方案--------------------
WM_LBUTTONDOWN
WM_LBUTTONUP

------解决方案--------------------
void CMyButton::OnLButtonDown(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
SetTimer(1,100,0);
CButton::OnLButtonDown(nFlags, point);
}

void CMyButton::OnLButtonUp(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
KillTimer(1);
CButton::OnLButtonUp(nFlags, point);
}

void CMyButton::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
if(GetKeyState(VK_LBUTTON) & 0x8000)
{
GetParent()->SendMessage(WM_COMMAND,BN_CLICKED << 16 | GetDlgCtrlID());
}
CButton::OnTimer(nIDEvent);
}
不通过定时器会死循环!
------解决方案--------------------
按一下 == 按100下

试试