windows media player11在全屏时左键双击默认的是暂停,个人感觉还是以前的双击退出全屏比较好用。
想请教各位高手有没有方法更改播放器默认的按键设置

解决方案 »

  1.   

    1. hook鼠标消息
    2. 当出现双击消息的时候, 直接全屏播放器
      

  2.   

    能详细说明点吗, 我是在一个客户端里用了一个mediaplayer控件,
    来播放媒体,mediaplayer11默认用esc退出全屏, 想改成双击退出全屏,
    这个hook截获消息大概应该怎么做,能给点提示吗
      

  3.   

    SetWindowsHook等来捕获你当前进程的消息,当发现是esc,双击消息等时,自己处理一下
      

  4.   

    谢谢各位,我照楼上的方法试了一下, 写了个局部hook,
    LRESULT   CALLBACK   CPlayerDlg::msghook(UINT  nCode, WPARAM   wParam, LPARAM   lParam)   
    {  
    if(nCode   <   0)   
    {     
    CallNextHookEx(hook,   nCode,   wParam,   lParam);   
        return   0;   
    }     
    LPMSG   msg  = (LPMSG)lParam;   
    switch(msg->message)   
    {   
    case   WM_LBUTTONDBLCLK:   
    {   
    int i=0; 
    i++;
    UNI_LOG((LL_DEBUG, "media player double click!!!!.\n"));
    return 0;
    //break;   
    }   
    }   
    return   CallNextHookEx(hook,   nCode,   wParam,   lParam);   
    }   
    问题是我截获到mediaplayer双击消息后, 怎么阻止那个双击消息继续发给mediaplyer呢
      

  5.   

    直接 return  1, 不要再调用CallNextHookEx
      

  6.   

    奇怪, 我return 1了, 消息还是传给mediaplayer了
    case  WM_LBUTTONDBLCLK:  
    {  
    UNI_LOG((LL_DEBUG, "media player double click!!!!.\n")); 
    return 1; }
      

  7.   

    不用吧,直接响应控件的包装窗口的WM_MBUTTONDBLCLK就行
      

  8.   

    说错了,是这个消息WM_LBUTTONDBLCLK
      

  9.   

    问题是这样的, mediaplayer11全屏后得按esc才能恢复原来屏幕,我想改成双击恢复,
    mediaplayer11全屏后, 所有的消息好像直接发给mediaplayer了,没有发给包装窗口,
    所以楼上的那个方法我最初试了试,行不通
      

  10.   

    你可以在双击时候模拟给mediaplayer发送ESC的键盘消息
      

  11.   

    添加Meidaplay的DoubleClick事件就可以了
    .h添加
    afx_msg void OnDoubleClickWmp(short nButton, short nShiftState, long fX, long fY);
    DECLARE_EVENTSINK_MAP()
    .cpp添加
    BEGIN_EVENTSINK_MAP(CXXXXXDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CAbcdDlg)
    ON_EVENT(CXXXXXDlg, IDC_WMP, 6506 /* DoubleClick */, OnDoubleClickWmp, VTS_I2 VTS_I2 VTS_I4 VTS_I4)
    //}}AFX_EVENTSINK_MAP
    END_EVENTSINK_MAP()void CXXXXXDlg::OnDoubleClickWmp(short nButton, short nShiftState, long fX, long fY) 
    {
     // TODO: Add your control notification handler code here
     m_WMP.SetFullScreen(!GetFullScreen());
    }
      

  12.   

    void CXXXXXDlg::OnDoubleClickWmp(short nButton, short nShiftState, long fX, long fY) 

    // TODO: Add your control notification handler code here 
    m_WMP.SetFullScreen(!m_WMP.GetFullScreen()); 

    刚才写少了