mirror of
				https://github.com/thunderbrewhq/thunderbrew
				synced 2025-10-28 14:56:06 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|   Copyright (C) 1997-2024 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) {
 | |
|         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
 | 
