diff --git a/tests/examples/seek/seek.c b/tests/examples/seek/seek.c
--- a/tests/examples/seek/seek.c
+++ b/tests/examples/seek/seek.c
@@ -32,7 +32,9 @@
 #include <gst/gst.h>
 #include <string.h>
 
-#ifdef HAVE_X
+#ifdef G_OS_WIN32
+#include <gdk/gdkwin32.h>
+#else
 #include <gdk/gdkx.h>
 #endif
 #include <gst/interfaces/xoverlay.h>
@@ -50,17 +52,30 @@ gtk_widget_get_allocation (GtkWidget * w, GtkAllocation * a)
 
 /* configuration */
 
-//#define SOURCE "filesrc"
-#define SOURCE "gnomevfssrc"
+#define SOURCE "filesrc"
+//#define SOURCE "gnomevfssrc"
 
-#define ASINK "alsasink"
+#define ASINK DEFAULT_AUDIOSINK
+//#define ASINK "autoaudiosink"
+#ifdef G_OS_WIN32
+//#define ASINK "directsoundsink"
+#define
+#else
+//#define ASINK "alsasink"
 //#define ASINK "osssink"
+#endif
 
-#define VSINK "xvimagesink"
+#define VSINK DEFAULT_VIDEOSINK
+//#define VSINK "autovideosink"
 //#define VSINK "sdlvideosink"
+
+#ifdef G_OS_WIN32
+//#define VSINK "directdrawsink"
+//#define VSINK "dshowvideosink"
+#else
+//#define VSINK "xvimagesink"
 //#define VSINK "ximagesink"
 //#define VSINK "aasink"
 //#define VSINK "cacasink"
+#endif
 
 #define FILL_INTERVAL 100
 //#define UPDATE_INTERVAL 500
@@ -946,11 +962,14 @@ make_playerbin_pipeline (const gchar * location)
 static GstElement *
 make_playerbin2_pipeline (const gchar * location)
 {
+  GstElement *videosink = gst_element_factory_make_or_warn (VSINK, "v_sink");
+
   GstElement *pipeline = construct_playerbin ("playbin2", location);
 
   /* FIXME: this is not triggered, playbin2 is not forwarding it from the sink */
   g_signal_connect (pipeline, "notify::volume", G_CALLBACK (volume_notify_cb),
       NULL);
+  g_object_set (G_OBJECT (pipeline), "video-sink", videosink, NULL);
   return pipeline;
 }
 
+#ifdef G_OS_WIN32
+    embed_xid = GDK_WINDOW_HWND (window);
+#else
     embed_xid = GDK_WINDOW_XID (window);
+#endif
     g_print ("Window realize: video window XID = %lu\n", embed_xid);
   }
 #endif
