Navigation Menu

Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Implemented Win32 version of the native window test
Browse files Browse the repository at this point in the history
  • Loading branch information
slouken committed Feb 9, 2009
1 parent dd99f33 commit 58718a7
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 4 deletions.
4 changes: 2 additions & 2 deletions test/testnative.c
Expand Up @@ -29,7 +29,7 @@ quit(int rc)
{
SDL_VideoQuit();
if (native_window) {
factory->DestroyWindow(native_window);
factory->DestroyNativeWindow(native_window);
}
exit(rc);
}
Expand Down Expand Up @@ -137,7 +137,7 @@ main(int argc, char *argv[])
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);
Expand Down
50 changes: 48 additions & 2 deletions test/testnativew32.c
Expand Up @@ -12,17 +12,63 @@ NativeWindowFactory Win32WindowFactory = {
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

0 comments on commit 58718a7

Please sign in to comment.