我做了一个控件,在控件中添加了一个窗口,在窗口上显示我捕获的图像,想请教一下大家,当播放图像时  怎么获取鼠标的双击事件?

解决方案 »

  1.   

    我是这样想的:
    首先,在这个空间的类中添加WM_LBUTTONUP(也就是鼠标左键单击消息)
    然后在这个类的声明中设定一个long型变量m_lastclicktime,用来保存上次鼠标左键单击的时间
    m_lastclicktime=GetTickCount();
    GetTickCount()函数的作用是获取从操作系统启动到现在所经过的毫秒数
    然后判断本次单击与上次单击的山间间隔是否小于等于鼠标双击最小间隔毫秒数,如果是,则可以判断是双击,然后进行相应的处理;如果不是,则什么也不做
    具体示例如下:
    void CExPictureCtrl::OnLButtonUp(UINT nFlags, CPoint point)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值 if(GetTickCount()-m_nTickCount<GetDoubleClickTime())
    {
    if(m_bCanFullScreen && m_pImg!=NULL)
    { CFullScreenDlg Dlg;
    //Dlg.pSrcDC=&m_Mdc;
    Dlg.pImg=img;
    Dlg.cxSrc=m_pImg->GetWidth();
    Dlg.cySrc=m_pImg->GetHeight();
    Dlg.DoModal();
    }
    }
    m_nTickCount=GetTickCount();
    CWnd::OnLButtonUp(nFlags, point);
    }
      

  2.   

    上面的代码写的不太清楚,在写一遍:
    void CExPictureCtrl::OnLButtonUp(UINT nFlags, CPoint point)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值 if(GetTickCount()-m_nTickCount<GetDoubleClickTime())
    {
    AfxMessageBox(_T("鼠标双击消息!"));
    }
    m_nTickCount=GetTickCount();
    CWnd::OnLButtonUp(nFlags, point);
    }