picture中正在播放视频,怎么让他响应MouseDown事件Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Msgbox "正在播放某某影片"
End Sub现在情况是,不播放视频时,单击鼠标会弹出窗口,等视频播放时,再怎么单击就不响应事件了,有什么方法可以让他响应mousedown事件

解决方案 »

  1.   

    谢谢楼上的回复,水平有限,不是太懂,能否详细点,我的目的是要在PictureBox播放视频时,在PictureBox1上单击鼠标能响应MouseDown事件,现在是只要一播放视频点了就没反应,谢谢
      

  2.   

    问一下,你的picture是如何播放视频的?
      

  3.   

    '显示图像
        MV_Usb2SetCapInfo hCurDvc, m_scanInfo
        MV_Usb2Start hCurDvc, str, 1342177280, 0, 0, -1, -1, Picture1.hwnd, 0, 0, 0是通过一个摄像头的API传送的
      

  4.   

    按我手头的一个代码,是生成一个播放窗口,设置为指定句柄的子窗口再用API关联上去......好象是这样吧.....代码没仔细看但一定有一个句柄的只需要子类化那个句柄就可以了
      

  5.   

    用SPY++在播放开始时,看看上面又多了个什么类名然后用Findwindowex根据类名得到句柄然后子类化.............
      

  6.   

    子类化啊~~~我手头的那个摄像头图象显示代码里就是在图片框上另建了一个窗口用于播放你只需要找到它的类名(假如是由DLL里建立它的话),使用FindWindowEx就可以得到句柄;然后子类化,对其鼠标消息进行处理.我上次帮一个朋友弄了一个子类化WMP窗口,实现拦截双击消息以消除双击全屏的功能,你可以参考一下:http://community.csdn.net/Expert/topic/5684/5684863.xml?temp=.3418848其中的子类化过程是这样:Public Function SubWndProc(ByVal Hwnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        Select Case MSG
            Case WM_LBUTTONDBLCLK       '吃双击消息
                SubWndProc = 1
                Exit Function
        End Select
        SubWndProc = CallWindowProc(PrevWndProc, Hwnd, MSG, wParam, lParam)     '其它消息不管
    End Function你在CASE那里拦截wm_lbuttondown或wm_rbuttondown之类的消息,再返回事件就可以了(封装到一个类里面,方便)
      

  7.   

    楼上的朋友,我用你说的SPY++,找到了摄像头工作时多出来的类名,是Afx:10000000:22b:0:1900011:70357
    Afx:10000000:22b:0:1900011:70357
    Afx:10000000:22b:0:1900011:b10323经常变化,怎么办?
      

  8.   

    奇了怪了,现在有办法得到窗口名,"MVC_CAPTRUE"
    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As LongDim lRet As Long
    lRet = FindWindow(0&, "MVC_CAPTRUE")
    MsgBox CStr(lRet)但是始终抓不到句柄,为0,用spy++找MVC_CAPTRUE可以找到
      

  9.   

    已解决MVChWnd = FindWindowEx(dy.Picture1.hWnd, 0, vbNullString, vbNullString)