Microsoft DirectX 9.0 |
The GetEventHandle method retrieves a handle to a manual-reset event that remains signaled while the queue contains event notifications.
Syntax
objMediaEvent.GetEventHandle(
ByRef hEvent As Long)
Parameters
hEvent
Variable that receives the event handle.
Return Values
This method does not return a value.
Remarks
The Filter Graph Manager keeps a manual-reset event that reflects the state of the event queue. If the queue contains event notifications, the manual-reset event is signaled. If the queue is empty, the IMediaEvent.GetEvent method resets the event. An application can use this event to determine the state of the queue.
To use this event in Visual Basic, your application must call into a Microsoft® Windows® function such as WaitForSingleObject or WaitForMultipleObjects. You must declare the function in a module, as shown in the example code. However, it might be easier in Visual Basic simply to create a timer and periodically call GetEvent.
Example Code
First declare the WaitForSingleObject and GetEvent methods in a module, as follows:
Public Const WAIT_ABANDONED& = &H80&
Public Const WAIT_OBJECT_0& = 0
Public Const WAIT_OBJECT_1& = 1
Public Const WAIT_TIMEOUT& = &H102&
Public Const INFINITE = &HFFFF
Public Declare Function WaitForSingleObject Lib "kernel32" _
(ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Declare Function CreateEvent _
Lib "kernel32" _
Alias "CreateEventA" _
(lpEventAttributes As Long, _
ByVal bManualReset As Long, _
ByVal bInitialState As Long, _
ByVal lpName As String) As Long
Then call GetEventHandle to retrieve the event handle, and use the WaitForSingleObject method to wait for the event to be signaled:
Dim hEvent As Long, wait_result As Long
Dim EvCode As Long, Param1 As Long, Param2 As Long
mEvent.GetEventHandle hEvent
wait_result = WaitForSingleObject(hEvent, 1000)
If wait_result = WAIT_OBJECT_0 Then
On Error Resume Next
Do
mEvent.GetEvent EvCode, Param1, Param2, 0
If Err.Number = 0 Then
' Handle event. (Not shown.)
mEvent.FreeEventParams EvCode, Param1, Param2
Loop While Err.Number = 0
End If
Err.Clear
See Also