怎么让BUTTON在按下的状态下持续触发BN_CLICKED事件,回帖有分
如何让BUTTON在按下的状态下持续触发BN_CLICKED事件,回帖有分
开发环境:VS2008 + VC + MFC
如何让BUTTON在按下的状态下持续触发BN_CLICKED事件,除了使用定时器,还有什么方法?
------解决方案--------------------
while()
{
........
Sleep()
}
可以吗
------解决方案--------------------
按钮按下,创建线程,按钮松开,结束线程。
------解决方案--------------------
PreTranslateMessage(MSG* pMsg)
WM_LBUTTONDOWN
WM_LBUTTONUP
example:
开发环境: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下
试试