Mercurial > sdl-ios-xcode
changeset 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 | 79b061c4f316 |
children | 94dd49f6b005 |
files | test/testnative.c test/testnativew32.c |
diffstat | 2 files changed, 50 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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);
--- 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