VC++ 按钮长按

来源:百度知道 编辑:UC知道 时间:2024/06/07 14:30:47
VC++中可以识别按钮的长按与短按吗?网上有人用下面代码实现了~可我却调试不好~期待高手指点~网上的代码是这样的:
从CButton派生个类,在WM_LBUTTONDOWN的时候记下时间,在WM_LBUTTONUP的时候再记一下。
然后,在按钮处理函数里判断时延。
如:
//TButton.h
class CTButton : public CButton
{
public:
CTButton();
DWORD st, ed;
protected:
//{{AFX_MSG(CTButton)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
//}}AFX_MSG
......
}

//TButton.cpp
void CTButton::OnLButtonDown(UINT nFlags, CPoint point)
{
st = GetTickCount();
CButton::OnLButtonDown(nFlags, point);
}

void CTButton::OnLButtonUp(UINT nFlags, CPoint point)
{
ed = GetTickCount();
CButton::OnLButtonUp(nFlags, point);
}

//dlg.cpp
void CSdaDlg::OnButton1()
{
if(m_bt.ed - m_bt.st < 2000) //可以把判断写成CTButton的函数
{
AfxMessageBox("short");
}
else
{

程序我看过了 写的逻辑上没错 也没有明显的语法错误 你如果调试不错 把错误帖上来 别人才好帮你

原程序用的是 ButtonUp 触发的发送消息
你可以在ButtonDown 的时触发一个SetTimer
2秒后触发消息就行了