[PATCH 01/23] mciqtz32: Add support for MCI_WINDOW

Maarten Lankhorst m.b.lankhorst at gmail.com
Fri May 21 05:17:58 CDT 2010


---
 dlls/mciqtz32/mciqtz.c |   52 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/dlls/mciqtz32/mciqtz.c b/dlls/mciqtz32/mciqtz.c
index a42529b..d19c7a4 100644
--- a/dlls/mciqtz32/mciqtz.c
+++ b/dlls/mciqtz32/mciqtz.c
@@ -776,6 +776,53 @@ out:
     return ret;
 }
 
+/***************************************************************************
+ *                              MCIQTZ_mciWindow                [internal]
+ */
+static DWORD MCIQTZ_mciWindow(UINT wDevID, DWORD dwFlags, LPMCI_DGV_WINDOW_PARMSW lpParms)
+{
+    WINE_MCIQTZ *wma = MCIQTZ_mciGetOpenDev(wDevID);
+    IVideoWindow *vidwin;
+
+    TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms);
+
+    if (!lpParms)
+        return MCIERR_NULL_PARAMETER_BLOCK;
+    if (!wma)
+        return MCIERR_INVALID_DEVICE_ID;
+    if (dwFlags & MCI_TEST)
+        return 0;
+
+    IFilterGraph2_QueryInterface(wma->pgraph, &IID_IVideoWindow, (void**)&vidwin);
+    if (!vidwin)
+        return 0;
+
+    if (dwFlags & MCI_DGV_WINDOW_HWND && (IsWindow(lpParms->hWnd) || !lpParms->hWnd)) {
+        LONG style = 0;
+        TRACE("Setting hWnd to %p\n", lpParms->hWnd);
+        IVideoWindow_put_Visible(vidwin, OAFALSE);
+        IVideoWindow_get_WindowStyle(vidwin, &style);
+        style &= ~WS_CHILD;
+        if (lpParms->hWnd)
+            IVideoWindow_put_WindowStyle(vidwin, style|WS_CHILD);
+        else
+            IVideoWindow_put_WindowStyle(vidwin, style);
+        IVideoWindow_put_Owner(vidwin, (OAHWND)lpParms->hWnd);
+        IVideoWindow_put_Visible(vidwin, OATRUE);
+        wma->parent = lpParms->hWnd;
+    }
+    if (dwFlags & MCI_DGV_WINDOW_STATE) {
+        TRACE("Setting nCmdShow to %d\n", lpParms->nCmdShow);
+        IVideoWindow_put_WindowState(vidwin, lpParms->nCmdShow);
+    }
+    if (dwFlags & MCI_DGV_WINDOW_TEXT) {
+        TRACE("Setting caption to %s\n", debugstr_w(lpParms->lpstrText));
+        IVideoWindow_put_Caption(vidwin, lpParms->lpstrText);
+    }
+    IVideoWindow_Release(vidwin);
+    return 0;
+}
+
 /******************************************************************************
  *              MCIAVI_mciUpdate            [internal]
  */
@@ -911,11 +958,12 @@ LRESULT CALLBACK MCIQTZ_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg,
         case MCI_SETAUDIO:      return MCIQTZ_mciSetAudio  (dwDevID, dwParam1, (LPMCI_DGV_SETAUDIO_PARMSW) dwParam2);
         case MCI_UPDATE:
             return MCIQTZ_mciUpdate(dwDevID, dwParam1, (LPMCI_DGV_UPDATE_PARMS)dwParam2);
+        case MCI_WINDOW:
+            return MCIQTZ_mciWindow(dwDevID, dwParam1, (LPMCI_DGV_WINDOW_PARMSW)dwParam2);
+        case MCI_PUT:
         case MCI_RECORD:
         case MCI_RESUME:
         case MCI_INFO:
-        case MCI_PUT:
-        case MCI_WINDOW:
         case MCI_LOAD:
         case MCI_SAVE:
         case MCI_FREEZE:
-- 
1.7.0.4


--------------050809030904090707000907--



More information about the wine-patches mailing list