# HG changeset patch # User Sam Lantinga # Date 1234161709 0 # Node ID 4cf533f434d8d39fae9fe618eadc4995f1bf1feb # Parent 79b061c4f316d51dde025f765c25bca720a09e11 Implemented Win32 version of the native window test diff -r 79b061c4f316 -r 4cf533f434d8 test/testnative.c --- a/test/testnative.c Mon Feb 09 06:28:45 2009 +0000 +++ b/test/testnative.c Mon Feb 09 06:41:49 2009 +0000 @@ -29,7 +29,7 @@ { SDL_VideoQuit(); if (native_window) { - factory->DestroyWindow(native_window); + factory->DestroyNativeWindow(native_window); } exit(rc); } @@ -137,7 +137,7 @@ quit(2); } printf("Creating native window for %s driver\n", driver); - native_window = factory->CreateWindow(WINDOW_W, WINDOW_H); + native_window = factory->CreateNativeWindow(WINDOW_W, WINDOW_H); if (!native_window) { fprintf(stderr, "Couldn't create native window\n"); quit(3); diff -r 79b061c4f316 -r 4cf533f434d8 test/testnativew32.c --- 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