思路:在一次单击后,并不立即判定其为单击,而是启动定时器,检查在定时器范围内,是否还有一次单击,如果有,判定为双击,如果没有,再判定前一次为单击。
BOOL bShouldTrigger = TRUE;
void CDbClickDlg::OnLButtonDown(UINT nFlags, CPoint point){
if( nFlags&0x8000 )
AfxMessageBox( "鼠标单击! ");
else
{
bShouldTrigger = TRUE;
// UINT aa = GetDoubleClickTime(); // 我的系统是500ms
SetTimer( 109, 200, 0 );
}
CDialog::OnLButtonDown(nFlags, point);
}
void CDbClickDlg::OnLButtonDblClk(UINT nFlags, CPoint point)
{
bShouldTrigger = FALSE;
AfxMessageBox( "鼠标双击! ");
CDialog::OnLButtonDblClk(nFlags, point);
}
void CDbClickDlg::OnTimer(UINT nIDEvent)
{
if( nIDEvent == 109 )
{
KillTimer( 109 );
if( bShouldTrigger )
PostMessage( WM_LBUTTONDOWN, MK_LBUTTON|0x8000 , 0 );
}
CDialog::OnTimer(nIDEvent);
}