diff --git a/dlls/mshtml/view.c b/dlls/mshtml/view.c
index b39c0d4..0798dfe 100644
--- a/dlls/mshtml/view.c
+++ b/dlls/mshtml/view.c
@@ -123,6 +123,87 @@
     serverwnd_class = RegisterClassExW(&wndclass);
 }
 
+static HRESULT activate_window(HTMLDocument *This)
+{
+    IOleInPlaceUIWindow *pIPWnd;
+    IOleInPlaceFrame *pIPFrame;
+    RECT posrect, cliprect;
+    OLEINPLACEFRAMEINFO frameinfo;
+    HWND parent_hwnd;
+    HRESULT hres;
+
+    if(!serverwnd_class)
+        register_serverwnd_class();
+
+    hres = IOleInPlaceSite_CanInPlaceActivate(This->ipsite);
+    if(hres != S_OK) {
+        WARN("CanInPlaceActivate returned: %08lx\n", hres);
+        return FAILED(hres) ? hres : E_FAIL;
+    }
+
+    hres = IOleInPlaceSite_GetWindowContext(This->ipsite, &pIPFrame, &pIPWnd, &posrect, &cliprect, &frameinfo);
+    if(FAILED(hres)) {
+        WARN("GetWindowContext failed: %08lx\n", hres);
+        return hres;
+    }
+    if(pIPWnd)
+        IOleInPlaceUIWindow_Release(pIPWnd);
+    TRACE("got window context: %p %p {%ld %ld %ld %ld} {%ld %ld %ld %ld} {%d %x %p %p %d}\n",
+            pIPFrame, pIPWnd, posrect.left, posrect.top, posrect.right, posrect.bottom,
+            cliprect.left, cliprect.top, cliprect.right, cliprect.bottom,
+            frameinfo.cb, frameinfo.fMDIApp, frameinfo.hwndFrame, frameinfo.haccel, frameinfo.cAccelEntries);
+
+    hres = IOleInPlaceSite_GetWindow(This->ipsite, &parent_hwnd);
+    if(FAILED(hres)) {
+        WARN("GetWindow failed: %08lx\n", hres);
+        return hres;
+    }
+
+    TRACE("got parent window %p\n", parent_hwnd);
+
+    if(This->hwnd) {
+        if(GetParent(This->hwnd) != parent_hwnd)
+            SetParent(This->hwnd, parent_hwnd);
+        SetWindowPos(This->hwnd, HWND_TOP,
+                posrect.left, posrect.top, posrect.right-posrect.left, posrect.bottom-posrect.top,
+                SWP_NOACTIVATE | SWP_SHOWWINDOW);
+    }else {
+        CreateWindowExW(0, wszInternetExplorer_Server, NULL,
+                WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
+                posrect.left, posrect.top, posrect.right-posrect.left, posrect.bottom-posrect.top,
+                parent_hwnd, NULL, hInst, This);
+
+        TRACE("Created window %p\n", This->hwnd);
+
+        SetWindowPos(This->hwnd, NULL, 0, 0, 0, 0,
+                SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOREDRAW | SWP_NOACTIVATE | SWP_SHOWWINDOW);
+        RedrawWindow(This->hwnd, NULL, NULL, RDW_INVALIDATE | RDW_NOERASE | RDW_ALLCHILDREN);
+        SetFocus(This->hwnd);
+
+        /* NOTE:
+         * Windows implementation calls:
+         * RegisterWindowMessage("MSWHEEL_ROLLMSG");
+         * SetTimer(This->hwnd, TIMER_ID, 100, NULL);
+         */
+    }
+
+    This->in_place_active = TRUE;
+    hres = IOleInPlaceSite_OnInPlaceActivate(This->ipsite);
+    if(FAILED(hres)) {
+        WARN("OnInPlaceActivate failed: %08lx\n", hres);
+        This->in_place_active = FALSE;
+        return hres;
+    }
+
+    if(This->frame)
+        IOleInPlaceFrame_Release(This->frame);
+    This->frame = pIPFrame;
+
+    This->window_active = TRUE;
+
+    return S_OK;
+}
+
 /**********************************************************
  * IOleDocumentView implementation
  */
@@ -236,10 +317,20 @@
 static HRESULT WINAPI OleDocumentView_Show(IOleDocumentView *iface, BOOL fShow)
 {
     HTMLDocument *This = DOCVIEW_THIS(iface);
+    HRESULT hres;
+
     TRACE("(%p)->(%x)\n", This, fShow);
 
-    if(This->hwnd)
-        ShowWindow(This->hwnd, fShow);
+    if(fShow) {
+        if(!This->ui_active) {
+            hres = activate_window(This);
+            if(FAILED(hres))
+                return hres;
+        }
+        ShowWindow(This->hwnd, SW_SHOW);
+    }else {
+        ShowWindow(This->hwnd, SW_HIDE);
+    }
 
     return S_OK;
 }
@@ -248,11 +339,6 @@
 {
     HTMLDocument *This = DOCVIEW_THIS(iface);
     HRESULT hres;
-    IOleInPlaceUIWindow *pIPWnd;
-    IOleInPlaceFrame *pIPFrame;
-    RECT posrect, cliprect;
-    OLEINPLACEFRAMEINFO frameinfo;
-    HWND parent_hwnd;
 
     TRACE("(%p)->(%x)\n", This, fUIActivate);
 
@@ -264,94 +350,41 @@
     if(fUIActivate) {
         if(This->ui_active)
             return S_OK;
-        if(!serverwnd_class)
-            register_serverwnd_class();
 
-        hres = IOleInPlaceSite_CanInPlaceActivate(This->ipsite);
-        if(hres != S_OK) {
-            WARN("CanInPlaceActivate returned: %08lx\n", hres);
-            return FAILED(hres) ? hres : E_FAIL;
+        if(!This->window_active) {
+            hres = activate_window(This);
+            if(FAILED(hres))
+                return hres;
         }
 
-        hres = IOleInPlaceSite_GetWindowContext(This->ipsite, &pIPFrame, &pIPWnd, &posrect, &cliprect, &frameinfo);
-        if(FAILED(hres)) {
-            WARN("GetWindowContext failed: %08lx\n", hres);
-            return hres;
-        }
-        if(pIPWnd)
-            IOleInPlaceUIWindow_Release(pIPWnd);
-        TRACE("got window context: %p %p {%ld %ld %ld %ld} {%ld %ld %ld %ld} {%d %x %p %p %d}\n",
-                pIPFrame, pIPWnd, posrect.left, posrect.top, posrect.right, posrect.bottom,
-                cliprect.left, cliprect.top, cliprect.right, cliprect.bottom,
-                frameinfo.cb, frameinfo.fMDIApp, frameinfo.hwndFrame, frameinfo.haccel, frameinfo.cAccelEntries);
-
-        hres = IOleInPlaceSite_GetWindow(This->ipsite, &parent_hwnd);
-        if(FAILED(hres)) {
-            WARN("GetWindow failed: %08lx\n", hres);
-            return hres;
-        }
-
-        TRACE("got parent window %p\n", parent_hwnd);
-
-        if(This->hwnd) {
-            if(GetParent(This->hwnd) != parent_hwnd)
-                SetParent(This->hwnd, parent_hwnd);
-            SetWindowPos(This->hwnd, HWND_TOP,
-                    posrect.left, posrect.top, posrect.right-posrect.left, posrect.bottom-posrect.top,
-                    SWP_NOACTIVATE | SWP_SHOWWINDOW);
-        }else {
-            CreateWindowExW(0, wszInternetExplorer_Server, NULL,
-                    WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
-                    posrect.left, posrect.top, posrect.right-posrect.left, posrect.bottom-posrect.top,
-                    parent_hwnd, NULL, hInst, This);
-
-            TRACE("Created window %p\n", This->hwnd);
-
-            SetWindowPos(This->hwnd, NULL, 0, 0, 0, 0,
-                    SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOREDRAW | SWP_NOACTIVATE | SWP_SHOWWINDOW);
-            RedrawWindow(This->hwnd, NULL, NULL, RDW_INVALIDATE | RDW_NOERASE | RDW_ALLCHILDREN);
-            SetFocus(This->hwnd);
-        }
-
-        This->in_place_active = TRUE;
-        hres = IOleInPlaceSite_OnInPlaceActivate(This->ipsite);
-        if(FAILED(hres)) {
-            WARN("OnInPlaceActivate failed: %08lx\n", hres);
-            This->in_place_active = FALSE;
-            return hres;
-        }
-
-        /* NOTE:
-         * Windows implementation calls:
-         * RegisterWindowMessage("MSWHEEL_ROLLMSG");
-         * SetTimer(This->hwnd, TIMER_ID, 100, NULL);
-         */
-
-        This->ui_active = TRUE;
         hres = IOleInPlaceSite_OnUIActivate(This->ipsite);
         if(SUCCEEDED(hres)) {
-            IOleInPlaceFrame_SetActiveObject(pIPFrame, ACTOBJ(This), wszHTML_Document);
+            IOleInPlaceFrame_SetActiveObject(This->frame, ACTOBJ(This), wszHTML_Document);
         }else {
             FIXME("OnUIActivate failed: %08lx\n", hres);
+            IOleInPlaceFrame_Release(This->frame);
+            This->frame = NULL;
             This->ui_active = FALSE;
             return hres;
         }
-        if(This->frame)
-            IOleInPlaceFrame_Release(This->frame);
-        This->frame = pIPFrame;
 
         hres = IDocHostUIHandler_ShowUI(This->hostui, 0, ACTOBJ(This), CMDTARGET(This),
-                pIPFrame, NULL);
+                This->frame, NULL);
         if(FAILED(hres))
             IDocHostUIHandler_HideUI(This->hostui);
+
+        This->ui_active = TRUE;
     }else {
-        This->ui_active = FALSE;
-        if(This->frame)
-            IOleInPlaceFrame_SetActiveObject(This->frame, NULL, NULL);
-        if(This->hostui)
-            IDocHostUIHandler_HideUI(This->hostui);
-        if(This->ipsite)
-            IOleInPlaceSite_OnUIDeactivate(This->ipsite, FALSE);
+        This->window_active = FALSE;
+        if(This->ui_active) {
+            This->ui_active = FALSE;
+            if(This->frame)
+                IOleInPlaceFrame_SetActiveObject(This->frame, NULL, NULL);
+            if(This->hostui)
+                IDocHostUIHandler_HideUI(This->hostui);
+            if(This->ipsite)
+                IOleInPlaceSite_OnUIDeactivate(This->ipsite, FALSE);
+        }
     }
     return S_OK;
 }
@@ -529,4 +562,5 @@
 
     This->in_place_active = FALSE;
     This->ui_active = FALSE;
+    This->window_active = FALSE;
 }
