@@ -141,7 +141,7 @@ static PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB = NULL;
141141#define STYLE_MASK_READONLY (WS_MINIMIZE | WS_MAXIMIZE)
142142#define STYLE_MASK_WRITABLE (~STYLE_MASK_READONLY)
143143
144- #define STYLE_FLAGS_RESIZABLE WS_THICKFRAME
144+ #define STYLE_FLAGS_RESIZABLE ( WS_THICKFRAME | WS_MAXIMIZEBOX)
145145
146146#define STYLE_FLAGS_UNDECORATED_OFF (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX)
147147#define STYLE_FLAGS_UNDECORATED_ON WS_POPUP
@@ -270,8 +270,8 @@ static DWORD MakeWindowStyle(unsigned flags)
270270
271271 // Minimized takes precedence over maximized
272272 int mized = MIZED_NONE ;
273- if (FLAG_IS_SET ( flags , FLAG_WINDOW_MINIMIZED ) ) mized = MIZED_MIN ;
274- if (flags & FLAG_WINDOW_MAXIMIZED ) mized = MIZED_MAX ;
273+ if (flags & FLAG_WINDOW_MINIMIZED ) mized = MIZED_MIN ;
274+ else if (flags & FLAG_WINDOW_MAXIMIZED ) mized = MIZED_MAX ;
275275
276276 switch (mized )
277277 {
@@ -1590,8 +1590,6 @@ int InitPlatform(void)
15901590
15911591 if (rlGetVersion () == RL_OPENGL_11_SOFTWARE ) // Using software renderer
15921592 {
1593- //ShowWindow(platform.hwnd, SW_SHOWDEFAULT); //SW_SHOWNORMAL
1594-
15951593 // Initialize software framebuffer
15961594 BITMAPINFO bmi = { 0 };
15971595 ZeroMemory (& bmi , sizeof (bmi ));
@@ -1620,6 +1618,9 @@ int InitPlatform(void)
16201618
16211619 CORE .Window .ready = true;
16221620
1621+ // Activate window to set focus and show taskbar icon
1622+ ShowWindow (platform .hwnd , SW_SHOWDEFAULT );
1623+
16231624 // Update flags (in case of deferred state change required)
16241625 UpdateFlags (platform .hwnd , platform .desiredFlags , platform .appScreenWidth , platform .appScreenHeight );
16251626
@@ -1916,6 +1917,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpara
19161917
19171918 EndPaint (hwnd , & ps );
19181919 }
1920+ else DefWindowProc (hwnd , msg , wparam , lparam );
19191921 }
19201922 case WM_INPUT :
19211923 {
@@ -2090,10 +2092,10 @@ static void UpdateWindowStyle(HWND hwnd, unsigned desiredFlags)
20902092 // Minimized takes precedence over maximized
20912093 Mized currentMized = MIZED_NONE ;
20922094 Mized desiredMized = MIZED_NONE ;
2093- if (CORE .Window .flags & WS_MINIMIZE ) currentMized = MIZED_MIN ;
2094- else if (CORE .Window .flags & WS_MAXIMIZE ) currentMized = MIZED_MAX ;
2095- if (desiredFlags & WS_MINIMIZE ) currentMized = MIZED_MIN ;
2096- else if (desiredFlags & WS_MAXIMIZE ) currentMized = MIZED_MAX ;
2095+ if (CORE .Window .flags & FLAG_WINDOW_MINIMIZED ) currentMized = MIZED_MIN ;
2096+ else if (CORE .Window .flags & FLAG_WINDOW_MAXIMIZED ) currentMized = MIZED_MAX ;
2097+ if (desiredFlags & FLAG_WINDOW_MINIMIZED ) desiredMized = MIZED_MIN ;
2098+ else if (desiredFlags & FLAG_WINDOW_MAXIMIZED ) desiredMized = MIZED_MAX ;
20972099
20982100 if (currentMized != desiredMized )
20992101 {
@@ -2109,10 +2111,41 @@ static void UpdateWindowStyle(HWND hwnd, unsigned desiredFlags)
21092111// Sanitize flags
21102112static unsigned SanitizeFlags (int mode , unsigned flags )
21112113{
2112- if (( flags & FLAG_WINDOW_MAXIMIZED ) && ( flags & FLAG_BORDERLESS_WINDOWED_MODE ) )
2114+ if (flags & FLAG_WINDOW_MAXIMIZED )
21132115 {
2114- TRACELOG (LOG_WARNING , "WIN32: WINDOW: Borderless windows mode overriding maximized window flag" );
2115- flags &= ~FLAG_WINDOW_MAXIMIZED ;
2116+ if (flags & FLAG_BORDERLESS_WINDOWED_MODE )
2117+ {
2118+ TRACELOG (LOG_WARNING , "WIN32: WINDOW: Borderless windows mode overriding maximized window flag" );
2119+ flags &= ~FLAG_WINDOW_MAXIMIZED ;
2120+ }
2121+
2122+ if (~flags & FLAG_WINDOW_RESIZABLE )
2123+ {
2124+ if (!(CORE .Window .flags & FLAG_WINDOW_MAXIMIZED ))
2125+ {
2126+ TRACELOG (LOG_WARNING , "WIN32: WINDOW: Cannot maximize a non-resizable window" );
2127+ flags &= ~FLAG_WINDOW_MAXIMIZED ;
2128+ }
2129+ else if (CORE .Window .flags & FLAG_WINDOW_RESIZABLE )
2130+ {
2131+ TRACELOG (LOG_WARNING , "WIN32: WINDOW: Cannot set window as non-resizable when maximized" );
2132+ flags |= FLAG_WINDOW_RESIZABLE ;
2133+ }
2134+ }
2135+ else if (!(CORE .Window .flags & FLAG_WINDOW_MAXIMIZED ))
2136+ {
2137+ if (CORE .Window .flags & FLAG_WINDOW_MINIMIZED )
2138+ {
2139+ // Window needs to be unminimized before it can be maximized since minimizing takes precedence
2140+ flags &= ~FLAG_WINDOW_MINIMIZED ;
2141+ }
2142+ else if ((flags & FLAG_WINDOW_MINIMIZED ) && !(CORE .Window .flags & FLAG_WINDOW_MINIMIZED ))
2143+ {
2144+ TRACELOG (LOG_WARNING , "WIN32: WINDOW: Cannot minimize and maximize a window in the same frame" );
2145+ flags &= ~FLAG_WINDOW_MINIMIZED ;
2146+ flags &= ~FLAG_WINDOW_MAXIMIZED ;
2147+ }
2148+ }
21162149 }
21172150
21182151 if (mode == 1 )
0 commit comments