IVideoWindow 的GUID 没有被初始化,maybe

解决方案 »

  1.   

    DWORD_PTR 是那里定义的啊?
      

  2.   

    还是检查一下程序吧.
    我给一个例子:
    #include <windows.h>
    #include <dshow.h>#define CLASSNAME "VideoWindow"IGraphBuilder   *pGraph = NULL;
    IMediaControl   *pMediaControl = NULL;
    IVideoWindow    *pVidWin;// = NULL;
    HWND            g_hwnd;void PlayFile(void)
    {
        // Create the filter graph manager.
        CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, 
            IID_IGraphBuilder, (void **)&pGraph);
        pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
        pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin);    // Build the graph. 
        pGraph->RenderFile(L"G:\\share\\clock.mpg", NULL);    //Set the video window.
        pVidWin->put_Owner((OAHWND)g_hwnd);
        pVidWin->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS);    RECT grc;
        GetClientRect(g_hwnd, &grc);
        pVidWin->SetWindowPosition(0, 0, grc.right, grc.bottom);    // Run the graph.
        pMediaControl->Run();
    }void CleanUp(void)
    {
        pVidWin->put_Visible(OAFALSE);
        pVidWin->put_Owner(NULL);   
        pMediaControl->Release();
        pVidWin->Release();
        pGraph->Release();
    }// Message handler.
    long FAR PASCAL WindowProc( HWND hwnd, UINT msg, UINT wParam, LONG lParam)
    {
        switch (msg)
        {
            case WM_DESTROY:
                CleanUp();
                PostQuitMessage(0);
                break;
            default:
                return (DefWindowProc(hwnd, msg, wParam, lParam));
        }
        return(NULL);
    }// Main.
    int PASCAL WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR  lpCmdLine, 
        int nCmdShow )
    {
        MSG         msg;
        WNDCLASS    wc;    CoInitialize(NULL);    ZeroMemory(&wc, sizeof wc);
        wc.lpfnWndProc  = WindowProc;
        wc.hInstance    = hInst;
        wc.hIcon        = LoadIcon( NULL, IDI_APPLICATION );
        wc.hCursor      = LoadCursor( NULL, IDC_ARROW );
        wc.hbrBackground = (HBRUSH)GetStockObject( BLACK_BRUSH );
        wc.lpszMenuName = NULL;
        wc.lpszClassName = CLASSNAME;
        RegisterClass( &wc );    g_hwnd = CreateWindow(
            CLASSNAME,
            "DirectShow Sample",
            WS_OVERLAPPEDWINDOW,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            CW_USEDEFAULT,
            NULL,
            NULL,
            hInst,
            NULL);    ShowWindow( g_hwnd, nCmdShow );
        UpdateWindow( g_hwnd );
        PlayFile();    while( GetMessage( &msg, NULL, 0, 0 ) )
        {
            TranslateMessage( &msg );
            DispatchMessage( &msg );
        }    CoUninitialize();
        return msg.wParam;
    }