mirror of
				https://github.com/thunderbrewhq/thunderbrew
				synced 2025-11-04 10:16:02 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
  Copyright (C) 1997-2025 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
 | 
						|
 | 
						|
#include <windows.h>
 | 
						|
 | 
						|
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 = TEXT("SDL Test");
 | 
						|
 | 
						|
    if (!RegisterClass(&wc)) {
 | 
						|
        MessageBox(NULL, TEXT("Window Registration Failed!"), TEXT("Error!"),
 | 
						|
                   MB_ICONEXCLAMATION | MB_OK);
 | 
						|
        return 0;
 | 
						|
    }
 | 
						|
 | 
						|
    hwnd =
 | 
						|
        CreateWindow(TEXT("SDL Test"), TEXT(""), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
 | 
						|
                     CW_USEDEFAULT, w, h, NULL, NULL, GetModuleHandle(NULL),
 | 
						|
                     NULL);
 | 
						|
    if (!hwnd) {
 | 
						|
        MessageBox(NULL, TEXT("Window Creation Failed!"), TEXT("Error!"),
 | 
						|
                   MB_ICONEXCLAMATION | MB_OK);
 | 
						|
        return 0;
 | 
						|
    }
 | 
						|
 | 
						|
    ShowWindow(hwnd, SW_SHOW);
 | 
						|
 | 
						|
    return hwnd;
 | 
						|
}
 | 
						|
 | 
						|
static void
 | 
						|
DestroyWindowNative(void *window)
 | 
						|
{
 | 
						|
    DestroyWindow((HWND)window);
 | 
						|
}
 | 
						|
 | 
						|
#endif
 |