     hDC>> SwapBuffers win32-error=0/f ;
 
 : setup-offscreen-gl ( world -- hDC hRC hBitmap bits )
-    [
-        swap
-        make-offscreen-dc-and-bitmap [
-            [ set-pixel-format ]
-            [ get-rc ] bi
-        ] 2dip ;
-    ] with-world-pixel-format
+    dup [ handle>> ] [ dim>> ] bi make-offscreen-dc-and-bitmap
+    [ >>hDC ] [ >>hBitmap ] [ >>bits ] tri* drop [
+        swap [ hDC>> set-pixel-format ] [ get-rc ] bi
+    ] with-world-pixel-format ;
 
 M: windows-ui-backend (open-offscreen-buffer) ( world -- )
-    dup setup-offscreen-gl <win-offscreen>
-    >>handle drop ;
+    win-offscreen new >>handle
+    setup-offscreen-gl ;
 
 M: windows-ui-backend (close-offscreen-buffer) ( handle -- )
     [ hDC>> DeleteDC drop ]

IN: ui.backend.windows

SINGLETON: windows-ui-backend

<PRIVATE


: init-clipboard ( -- )
    <pasteboard> clipboard set-global
    <clipboard> selection set-global ;

SYMBOLS: msg-obj class-name-ptr mouse-captured ;

