Microsoft Windows CE 3.0  

Using the IVideoWindow Interface

Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

This section describes how to use the IVideoWindowinterface to set properties on the video window, including the owner and style of the window.

Note   Most of the code in the sample program performs standard windowing operations, and is not discussed in this article. In particular, the functions WindowProcand WinMaincontain a typical framework for Microsoft Windows applications. The application-defined functions PlayFile and CleanUp are the ones of interest.

First, create an instance of the filter graph manager and construct the filter graph (through a call to the IGraphBuilder::RenderFilemethod). For more information on how to do this, see How to Play a File.

Then, before starting playback, set the properties on the video window, as follows:

  1. Attach the video playback window to the desired parent window. To do this, call the IVideoWindow::put_Ownermethod and pass it a handle to the owner window. This method takes a variable of type OAHWND, so cast the handle to this type, if necessary:
    IVideoWindow *pVidWin = NULL;
    pVidWin->put_Owner((OAHWND)g_hwnd);
  2. Change the style of the video window to a child window. To do this, call the IVideoWindow::put_WindowStylemethod and pass it a combination of style flags. The WS_CHILD flag indicates that the window is a child window; the WS_CLIPSIBLINGS flag prevents the window from drawing inside the client area of another child window.
    pVidWin->put_WindowStyle(WS_CHILD |
    WS_CLIPSIBLINGS);

    Set the position of the video window by calling the IVideoWindow::SetWindowPositionmethod. This method takes device coordinates specifying the left edge (x-axis), top edge (y-axis), width, and height of the window. The sample program stretches the video window to fill the entire parent window:

    RECT grc; GetClientRect(g_hwnd, &grc);
    pVidWin->SetWindowPosition(0, 0, grc.right, grc.bottom);

    The GetClientRectfunction fills a RECTstructure with the coordinates of the window's client area. The coordinates are relative to the upper-left corner of the client area, so the leftand topmembers are both zero and the rightand bottommembers define the width and height, respectively.

    Before the application exits, it is important that you set the visibility of the video window to false. Otherwise, a video image remains on the screen and the user cannot get rid of it. Then, reset the owner to NULL; otherwise, messages are sent to the wrong window, likely causing errors.

    HRESULT hr = pVidWin->put_Visible(OAFALSE); hr
    = pVidWin->put_Owner(NULL);


     Last updated on Tuesday, May 18, 2004

    © 2004 Microsoft Corporation. All rights reserved.