@@ -47,6 +47,7 @@ const HWND = std.os.windows.HWND;
4747const HDC = std .os .windows .HDC ;
4848const HGLRC = std .os .windows .HGLRC ;
4949const FARPROC = std .os .windows .FARPROC ;
50+ const PROC = std .os .windows .PROC ;
5051const INT = std .os .windows .INT ;
5152const SIZE_T = std .os .windows .SIZE_T ;
5253const UINT = std .os .windows .UINT ;
@@ -139,6 +140,10 @@ pub const MINMAXINFO = extern struct {
139140 ptMaxTrackSize : POINT ,
140141};
141142
143+ pub extern "user32" fn GetDC (hWnd : HWND ) callconv (WINAPI ) HDC ;
144+
145+ pub extern "user32" fn ReleaseDC (hWnd : HWND , hdc : HDC ) callconv (WINAPI ) c_int ;
146+
142147pub extern "user32" fn SetProcessDPIAware () callconv (WINAPI ) BOOL ;
143148
144149pub extern "user32" fn GetClientRect (HWND , * RECT ) callconv (WINAPI ) BOOL ;
@@ -203,6 +208,23 @@ pub extern "user32" fn CreateWindowExA(
203208 lpParam : ? LPVOID ,
204209) callconv (WINAPI ) ? HWND ;
205210
211+ pub extern "user32" fn ShowWindow (
212+ hwnd : HWND ,
213+ nCmdShow : i32 ,
214+ ) callconv (WINAPI ) bool ;
215+
216+ pub extern "user32" fn IsWindow (hwnd : ? HWND ) callconv (WINAPI ) bool ;
217+
218+ pub extern "user32" fn SetWindowPos (
219+ hWnd : HWND ,
220+ hWndInsertAfter : ? HWND ,
221+ X : i32 ,
222+ Y : i32 ,
223+ cx : i32 ,
224+ cY : i32 ,
225+ uFlags : UINT ,
226+ ) callconv (WINAPI ) bool ;
227+
206228pub extern "user32" fn DestroyWindow (hWnd : HWND ) BOOL ;
207229
208230pub extern "user32" fn PostQuitMessage (nExitCode : i32 ) callconv (WINAPI ) void ;
@@ -267,15 +289,33 @@ pub extern "shell32" fn SHGetKnownFolderPath(
267289
268290pub const WS_BORDER = 0x00800000 ;
269291pub const WS_OVERLAPPED = 0x00000000 ;
292+ pub const WS_CHILD = 0x40000000 ;
293+ pub const WS_CHILDWINDOW = WS_CHILD ;
294+ pub const WS_CLIPCHILDREN = 0x02000000 ;
295+ pub const WS_CLIPSIBLINGS = 0x04000000 ;
296+ pub const WS_DISABLED = 0x08000000 ;
297+ pub const WS_GROUP = 0x00020000 ;
270298pub const WS_SYSMENU = 0x00080000 ;
271299pub const WS_DLGFRAME = 0x00400000 ;
300+ pub const WS_HSCROLL = 0x00100000 ;
301+ pub const WS_ICONIC = 0x20000000 ;
272302pub const WS_CAPTION = WS_BORDER | WS_DLGFRAME ;
303+ pub const WS_MINIMIZE = 0x20000000 ;
273304pub const WS_MINIMIZEBOX = 0x00020000 ;
305+ pub const WS_MAXIMIZE = 0x01000000 ;
274306pub const WS_MAXIMIZEBOX = 0x00010000 ;
275307pub const WS_THICKFRAME = 0x00040000 ;
276308pub const WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME |
277309 WS_MINIMIZEBOX | WS_MAXIMIZEBOX ;
310+ pub const WS_POPUP = 0x80000000 ;
311+ pub const WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU ;
312+ pub const WS_SIZEBOX = 0x00040000 ;
313+ pub const WS_TABSTOP = 0x00010000 ;
314+ pub const WS_TILED = 0x00000000 ;
315+ pub const WS_TILEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME |
316+ WS_MINIMIZEBOX | WS_MAXIMIZEBOX ;
278317pub const WS_VISIBLE = 0x10000000 ;
318+ pub const WS_VSCROLL = 0x00200000 ;
279319
280320pub const WM_MOUSEMOVE = 0x0200 ;
281321pub const WM_LBUTTONDOWN = 0x0201 ;
@@ -373,6 +413,19 @@ pub const WNDCLASSEXA = extern struct {
373413 hIconSm : ? HICON ,
374414};
375415
416+ pub const CS_BYTEALIGNCLIENT : comptime_int = 0x1000 ;
417+ pub const CS_BYTEALIGNWINDOW : comptime_int = 0x2000 ;
418+ pub const CS_CLASSDC : comptime_int = 0x0040 ;
419+ pub const CS_DBLCLKS : comptime_int = 0x0008 ;
420+ pub const CS_DROPSHADOW : comptime_int = 0x00020000 ;
421+ pub const CS_GLOBALCLASS : comptime_int = 0x4000 ;
422+ pub const CS_HREDRAW : comptime_int = 0x0002 ;
423+ pub const CS_NOCLOSE : comptime_int = 0x0200 ;
424+ pub const CS_OWNDC : comptime_int = 0x0020 ;
425+ pub const CS_PARENTDC : comptime_int = 0x0080 ;
426+ pub const CS_SAVEBITS : comptime_int = 0x0800 ;
427+ pub const CS_VREDRAW : comptime_int = 0x0001 ;
428+
376429pub const OSVERSIONINFOW = extern struct {
377430 dwOSVersionInfoSize : ULONG ,
378431 dwMajorVersion : ULONG ,
@@ -560,3 +613,85 @@ pub const IM_VK_KEYPAD_ENTER = VK_RETURN + 256;
560613pub const KF_EXTENDED = 0x0100 ;
561614
562615pub const GUID_NULL = GUID .parse ("{00000000-0000-0000-0000-000000000000}" );
616+
617+ pub const PIXELFORMATDESCRIPTOR = extern struct {
618+ nSize : WORD ,
619+ nVersion : WORD ,
620+ dwFlags : DWORD ,
621+ iPixelType : BYTE ,
622+ cColorBits : BYTE ,
623+ cRedBits : BYTE ,
624+ cRedShift : BYTE ,
625+ cGreenBits : BYTE ,
626+ cGreenShift : BYTE ,
627+ cBlueBits : BYTE ,
628+ cBlueShift : BYTE ,
629+ cAlphaBits : BYTE ,
630+ cAlphaShift : BYTE ,
631+ cAccumBits : BYTE ,
632+ cAccumRedBits : BYTE ,
633+ cAccumGreenBits : BYTE ,
634+ cAccumBlueBits : BYTE ,
635+ cAccumAlphaBits : BYTE ,
636+ cDepthBits : BYTE ,
637+ cStencilBits : BYTE ,
638+ cAuxBuffers : BYTE ,
639+ iLayerType : BYTE ,
640+ bReserved : BYTE ,
641+ dwLayerMask : DWORD ,
642+ dwVisibleMask : DWORD ,
643+ dwDamageMask : DWORD ,
644+ };
645+
646+ pub const PFD_DRAW_TO_WINDOW : comptime_int = 0x00000004 ;
647+ pub const PFD_DRAW_TO_BITMAP : comptime_int = 0x00000008 ;
648+ pub const PFD_SUPPORT_GDI : comptime_int = 0x00000010 ;
649+ pub const PFD_SUPPORT_OPENGL : comptime_int = 0x00000020 ;
650+ pub const PFD_GENERIC_ACCELERATED : comptime_int = 0x00001000 ;
651+ pub const PFD_GENERIC_FORMAT : comptime_int = 0x00000040 ;
652+ pub const PFD_NEED_PALETTE : comptime_int = 0x00000080 ;
653+ pub const PFD_NEED_SYSTEM_PALETTE : comptime_int = 0x00000100 ;
654+ pub const PFD_DOUBLEBUFFER : comptime_int = 0x00000002 ;
655+ pub const PFD_STEREO : comptime_int = 0x00000001 ;
656+ pub const PFD_SWAP_LAYER_BUFFERS : comptime_int = 0x00000800 ;
657+
658+ pub const PFD_DEPTH_DONTCARE : comptime_int = 0x20000000 ;
659+ pub const PFD_DOUBLEBUFFER_DONTCARE : comptime_int = 0x40000000 ;
660+ pub const PFD_STEREO_DONTCARE : comptime_int = 0x80000000 ;
661+
662+ pub const PFD_SWAP_COPY : comptime_int = 0x00000400 ;
663+ pub const PFD_SWAP_EXCHANGE : comptime_int = 0x00000200 ;
664+
665+ pub const PFD_TYPE_RGBA : comptime_int = 0 ;
666+ pub const PFD_TYPE_COLORINDEX : comptime_int = 1 ;
667+
668+ pub extern "Gdi32" fn DescribePixelFormat (
669+ hdc : HDC ,
670+ iPixelFormat : c_int ,
671+ nBytes : UINT ,
672+ ppfd : * const PIXELFORMATDESCRIPTOR ,
673+ ) callconv (WINAPI ) c_int ;
674+
675+ pub extern "Gdi32" fn ChoosePixelFormat (
676+ hdc : HDC ,
677+ ppfd : * const PIXELFORMATDESCRIPTOR ,
678+ ) callconv (WINAPI ) c_int ;
679+
680+ pub extern "Gdi32" fn SetPixelFormat (
681+ hdc : HDC ,
682+ format : c_int ,
683+ ppfd : * const PIXELFORMATDESCRIPTOR ,
684+ ) callconv (WINAPI ) bool ;
685+
686+ pub extern "Gdi32" fn SwapBuffers (hdc : HDC ) callconv (WINAPI ) BOOL ;
687+
688+ pub extern "Opengl32" fn wglCreateContext (hdc : HDC ) callconv (WINAPI ) HGLRC ;
689+
690+ pub extern "Opengl32" fn wglDeleteContext (unnamedParam1 : HGLRC ) callconv (WINAPI ) BOOL ;
691+
692+ pub extern "Opengl32" fn wglMakeCurrent (
693+ hdc : HDC ,
694+ glContext : HGLRC ,
695+ ) callconv (WINAPI ) BOOL ;
696+
697+ pub extern "Opengl32" fn wglGetProcAddress (unnamedParam1 : LPCSTR ) callconv (WINAPI ) ? PROC ;
0 commit comments