diff test/testnativew32.c @ 3060:4cf533f434d8

Implemented Win32 version of the native window test
author Sam Lantinga <slouken@libsdl.org>
date Mon, 09 Feb 2009 06:41:49 +0000
parents 089a77aebb7d
children 6f3308d4b6cd
line wrap: on
line diff
--- a/test/testnativew32.c	Mon Feb 09 06:28:45 2009 +0000
+++ b/test/testnativew32.c	Mon Feb 09 06:41:49 2009 +0000
@@ -12,17 +12,63 @@
     DestroyWindowWin32
 };
 
-static Display *dpy;
+LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+    switch(msg)
+    {
+        case WM_CLOSE:
+            DestroyWindow(hwnd);
+        break;
+        case WM_DESTROY:
+            PostQuitMessage(0);
+        break;
+        default:
+            return DefWindowProc(hwnd, msg, wParam, lParam);
+    }
+    return 0;
+}
 
 static void *
 CreateWindowWin32(int w, int h)
 {
-    return NULL;
+    HWND hwnd;
+    WNDCLASS wc;
+
+    wc.style         = 0;
+    wc.lpfnWndProc   = WndProc;
+    wc.cbClsExtra    = 0;
+    wc.cbWndExtra    = 0;
+    wc.hInstance     = GetModuleHandle(NULL);
+    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
+    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
+    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
+    wc.lpszMenuName  = NULL;
+    wc.lpszClassName = "SDL Test";
+
+    if(!RegisterClass(&wc))
+    {
+        MessageBox(NULL, "Window Registration Failed!", "Error!",
+            MB_ICONEXCLAMATION | MB_OK);
+        return 0;
+    }
+
+    hwnd = CreateWindow("SDL Test", "", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, w, h, NULL, NULL, GetModuleHandle(NULL), NULL);
+    if(hwnd == NULL)
+    {
+        MessageBox(NULL, "Window Creation Failed!", "Error!",
+            MB_ICONEXCLAMATION | MB_OK);
+        return 0;
+    }
+
+    ShowWindow(hwnd, SW_SHOW);
+
+    return hwnd;
 }
 
 static void
 DestroyWindowWin32(void *window)
 {
+    DestroyWindow((HWND)window);
 }
 
 #endif