You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.0 KiB
86 lines
2.0 KiB
/* |
|
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org> |
|
|
|
This software is provided 'as-is', without any express or implied |
|
warranty. In no event will the authors be held liable for any damages |
|
arising from the use of this software. |
|
|
|
Permission is granted to anyone to use this software for any purpose, |
|
including commercial applications, and to alter it and redistribute it |
|
freely. |
|
*/ |
|
|
|
#include "testnative.h" |
|
|
|
#ifdef TEST_NATIVE_WINDOWS |
|
|
|
static void *CreateWindowNative(int w, int h); |
|
static void DestroyWindowNative(void *window); |
|
|
|
NativeWindowFactory WindowsWindowFactory = { |
|
"windows", |
|
CreateWindowNative, |
|
DestroyWindowNative |
|
}; |
|
|
|
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 * |
|
CreateWindowNative(int w, int h) |
|
{ |
|
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 |
|
DestroyWindowNative(void *window) |
|
{ |
|
DestroyWindow((HWND) window); |
|
} |
|
|
|
#endif
|
|
|