void PaintWindow(HWND hWnd) { bool bNeedPaint = false; PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); if( g_mediaControl == NULL ) // we know that there is nothing loaded { bNeedPaint = true; } else { // If we have a movie loaded, we only need to repaint // when the graph is stopped OAFilterState state; if( SUCCEEDED( g_mediaControl->GetState(0, & state ) ) ) { bNeedPaint = ( state == State_Stopped ); } } if ( bNeedPaint ) { RECT rc2; GetClientRect(hWnd, &rc2); FillRect(hdc, &rc2, (HBRUSH)(COLOR_WINDOW+1)); } EndPaint( hWnd, &ps ); }
HRESULT CloseGraph(HWND window) { if( g_mediaControl != NULL ) { OAFilterState state; do { g_mediaControl->Stop(); g_mediaControl->GetState(0, & state ); } while( state != State_Stopped ) ; } g_allocator = NULL; g_mediaControl = NULL; g_filter = NULL; g_graph = NULL; ::InvalidateRect( window, NULL, true ); return S_OK; }