我用鼠标钩子想得到鼠标在mediaplay,realplay控件上双击的消息。
却得不到呢?
我应该怎么做才能可以在这些控件上双击得以全屏呢?

解决方案 »

  1.   

    那我说一下方法先:
    1、不管用哪种播放控件(我是用的类方法,没有直接拖到对话框模版上的),先在创建这个视频控件的时候保存好视频窗口区域(即该窗口大小)。并设置播放控件的视频区域与你的窗口是适应的,即大小跟着主窗口变化。
    2、在你的主窗口onsize,onmove函数中跟着保存视频区域窗口大小(关键一点就是你的视频窗口是主窗口的大小减去其它的你的主窗口的内容大小)。
    3、添加m_OldHook = SetWindowsHookEx(WH_MOUSE,CMediaWnd::MouseProc,NULL,GetCurrentThreadId());LRESULT CALLBACK CMediaWnd::MouseProc( int nCode,WPARAM wParam, LPARAM lParam )
    {
    if(nCode >= 0)
    {
    MOUSEHOOKSTRUCT* pmouse = (MOUSEHOOKSTRUCT*)lParam;
    if(PtInRect(&CMediaWnd::m_ImageRect, pmouse->pt))
    {
    switch (wParam)
    {

    case WM_RBUTTONDOWN:
    case WM_RBUTTONUP:
    return -1;
    case WM_MOUSEMOVE:
    SetCursor(LoadCursor(NULL,IDC_ARROW));
    return -1;
    case WM_LBUTTONDBLCLK:
    ::SendMessage(CMediaWnd::m_hMainWnd,USER_IMAGE_DBCLICK,0,0);
    return -1;
    default:
    break;
    }
    } }
    return CallNextHookEx(CMediaWnd::m_OldHook,nCode,wParam,lParam);
    }
    4\、解释一点:GetCurrentThreadId();会得到的线程ID值与视频控件的线程ID值是会相同的。
    5、最好还要做个键盘勾子,把ESC键的功能得到。这样也可以防止用护按ESC键退出全屏时的窗口大小不变化。
    6、最后就是要把全屏后恢复的大小内容的视频区域还原。这样就不会出现鼠标不响应的情况。
    7、这种方法适应MEDIAPLAY,REALPLAY,quickplay控件。其中MEDIAPLAY9.0,win2000环境下有点不太好使,其它的功能都已经正常。