diff --git a/include/oleidl.idl b/include/oleidl.idl
index c9e8aa0..5e41081 100644
--- a/include/oleidl.idl
+++ b/include/oleidl.idl
@@ -20,6 +20,7 @@
 
 import "objidl.idl";
 
+interface IOleInPlaceActiveObject;
 
 /*****************************************************************************
  * IOleTypes interface
@@ -96,54 +97,6 @@
 }
 
 
-/* avoid conflict with Wine Unicode macros */
-cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
-cpp_quote("#undef TranslateAccelerator")
-cpp_quote("#endif")
-
-/*****************************************************************************
- * IOleInPlaceActiveObject interface
- */
-interface IOleInPlaceUIWindow;  /* forward declaration */
-[
-    object,
-    uuid(00000117-0000-0000-c000-000000000046)
-]
-interface IOleInPlaceActiveObject : IOleWindow
-{
-    typedef [unique] IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
-
-    [local]
-    HRESULT TranslateAccelerator(
-        [in] LPMSG lpmsg);
-
-    [call_as(TranslateAccelerator)]
-    HRESULT RemoteTranslateAccelerator();
-
-    HRESULT OnFrameWindowActivate(
-        [in] BOOL fActivate);
-
-    HRESULT OnDocWindowActivate(
-        [in] BOOL fActivate);
-
-    [local]
-    HRESULT ResizeBorder(
-        [in] LPCRECT prcBorder,
-        [in, unique] IOleInPlaceUIWindow *pUIWindow,
-        [in] BOOL fFrameWindow);
-
-    [call_as(ResizeBorder)]
-    HRESULT RemoteResizeBorder(
-        [in] LPCRECT prcBorder,
-        [in] REFIID riid,
-        [in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow,
-        [in] BOOL fFrameWindow);
-
-    HRESULT EnableModeless(
-        [in] BOOL fEnable);
-}
-
-
 /*****************************************************************************
  * IOleInPlaceUIWindow interface
  */
@@ -176,6 +129,11 @@
 }
 
 
+/* avoid conflict with Wine Unicode macros */
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef TranslateAccelerator")
+cpp_quote("#endif")
+
 /*****************************************************************************
  * IOleInPlaceFrame interface
  */
@@ -229,6 +187,48 @@
 
 
 /*****************************************************************************
+ * IOleInPlaceActiveObject interface
+ */
+[
+    object,
+    uuid(00000117-0000-0000-c000-000000000046)
+]
+interface IOleInPlaceActiveObject : IOleWindow
+{
+    typedef [unique] IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
+
+    [local]
+    HRESULT TranslateAccelerator(
+        [in] LPMSG lpmsg);
+
+    [call_as(TranslateAccelerator)]
+    HRESULT RemoteTranslateAccelerator();
+
+    HRESULT OnFrameWindowActivate(
+        [in] BOOL fActivate);
+
+    HRESULT OnDocWindowActivate(
+        [in] BOOL fActivate);
+
+    [local]
+    HRESULT ResizeBorder(
+        [in] LPCRECT prcBorder,
+        [in, unique] IOleInPlaceUIWindow *pUIWindow,
+        [in] BOOL fFrameWindow);
+
+    [call_as(ResizeBorder)]
+    HRESULT RemoteResizeBorder(
+        [in] LPCRECT prcBorder,
+        [in] REFIID riid,
+        [in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow,
+        [in] BOOL fFrameWindow);
+
+    HRESULT EnableModeless(
+        [in] BOOL fEnable);
+}
+
+
+/*****************************************************************************
  * IOleInPlaceSite interface
  */
 [
