Re: Button use in VC6
This is the way I did a repeating button:
#pragma once
// CRepeatButton.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CRepeatButton window
class CRepeatButton : public CButton
{
// Construction
public:
CRepeatButton();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CRepeatButton)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CRepeatButton();
// Generated message map functions
protected:
//{{AFX_MSG(CRepeatButton)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
CRect m_ClientRect;
BOOL m_IsOut;
};
/////////////////////////////////////////////////////////////////////////////
// CRepeatButton.cpp : implementation file
//
#include "stdafx.h"
#include "RepeatButton.h"
/////////////////////////////////////////////////////////////////////////////
// CRepeatButton
CRepeatButton::CRepeatButton()
{
}
CRepeatButton::~CRepeatButton()
{
}
BEGIN_MESSAGE_MAP(CRepeatButton, CButton)
//{{AFX_MSG_MAP(CRepeatButton)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_TIMER()
ON_WM_MOUSEMOVE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRepeatButton message handlers
void CRepeatButton::OnLButtonDown(UINT nFlags, CPoint point)
{
m_IsOut = FALSE;
GetClientRect(&m_ClientRect);
SetCapture();
//start the repeat process after a 250 millisecond delay
SetTimer(100,250,NULL);
CButton::OnLButtonDown(nFlags, point);
}
void CRepeatButton::OnLButtonUp(UINT nFlags, CPoint point)
{
KillTimer(200);
KillTimer(100);
ReleaseCapture();
CButton::OnLButtonUp(nFlags, point);
}
void CRepeatButton::OnTimer(UINT nIDEvent)
{
if (nIDEvent == 100)
{
KillTimer(100);
//start the repeat process
SetTimer(200,0,NULL);
}
else if (nIDEvent = 200)
{
CWnd *Parent = GetParent();
if (Parent)
{
Parent->SendMessage(WM_COMMAND,MAKEWPARAM(GetDlgCtrlID(),BN_CLICKED),(LPARAM)m_hWnd);
}
}
CButton::OnTimer(nIDEvent);
}
void CRepeatButton::OnMouseMove(UINT nFlags, CPoint point)
{
if ((nFlags & MK_LBUTTON))
{
if (m_ClientRect.PtInRect(point) && m_IsOut)
{
m_IsOut = FALSE;
SetTimer(200,0,NULL);
}
else if (!m_ClientRect.PtInRect(point) && !m_IsOut)
{
m_IsOut = TRUE;
KillTimer(100);
KillTimer(200);
}
}
}
AliR.
"Kahlua" <kahlua@right.here> wrote in message
news:HR5Hj.2232$sR1.1150@trndny08...
I have a funstion that uses buttons to change values.
Each time you press the + button my value increments as I wanted.
How do I make it so if you keep the button pressed the value goes up
faster after like 2 seconds?
In other words how do I check if button is still pressed?
Right now I have it increment the count each time the button is clicked.
Thanks