Basically, move frame window controls from being children of the frame to being children of the background HWND_OBJECT. You can then reverse the process to bring them back into view. Following function implements this code.
/* --------------------------------------------------------------
-- Function: ToggleFrame
--
-- Description: Toggles frame control visible/invisible
--
-- Notes: Code stolen from someone who stole it from an MS sample
----------------------------------------------------------------- */
void ToggleFrame(HWND hwndFrame) {
if (! Hidden) { /* hide contorls */
hwndTitle = WinWindowFromID( hwndFrame, FID_TITLEBAR );
hwndSys = WinWindowFromID( hwndFrame, FID_SYSMENU );
... repeat for FID_MINMAX, etc ...
WinSetParent(hwndTitle, HWND_OBJECT, FALSE );
WinSetParent(hwndSys, HWND_OBJECT, FALSE );
... repeat for FID_MINMAX, etc ...
}
else { /* restore controls */
WinSetParent( hwndTitle, hwndFrame, FALSE );
WinSetParent( hwndSys, hwndFrame, FALSE );
... basically reverse of above ...
}
WinSendMsg( hwndFrame, WM_UPDATEFRAME,
(MPARAM)(FCF_TITLEBAR | FCF_SYSMENU | ...), NULL);
SizeTheWindow( hwndFrame );
Hidden = ! Hidden;
return;
}
Credit: Mike Thompson