+ //
+ // Send anything to initialize the frame
+ //
+ ::WinSendMsg( hFrame
+ ,WM_UPDATEFRAME
+ ,(MPARAM)FCF_TASKLIST
+ ,(MPARAM)0
+ );
+
+ //
+ // Now size everything. If adding a menu the client will need to be resized.
+ //
+ if (!::WinSetWindowPos( hFrame
+ ,HWND_TOP
+ ,nX
+ ,nY
+ ,nWidth
+ ,nHeight
+ ,SWP_SIZE | SWP_MOVE | SWP_ACTIVATE
+ ))
+ return FALSE;
+
+ WinQueryWindowPos(hFrame, &vSwp);
+
+ //
+ // Set the client window's background, otherwise it is transparent!
+ //
+ wxColour vColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW);
+
+ vRgb.bRed = (BYTE)vColour.Red();
+ vRgb.bGreen = (BYTE)vColour.Green();
+ vRgb.bBlue = (BYTE)vColour.Blue();
+ WinSetPresParam( hClient
+ ,PP_BACKGROUNDCOLOR
+ ,(ULONG)sizeof(RGB2)
+ ,(PVOID)&vRgb
+ );
+ if (ulCreateFlags & FCF_TITLEBAR)
+ {
+ hTitlebar = WinWindowFromID(hFrame, FID_TITLEBAR);
+ WinQueryWindowPos(hTitlebar, &vSwpTitlebar);
+ }
+ if (ulCreateFlags & FCF_HORZSCROLL)
+ {
+ hHScroll = WinWindowFromID(hFrame, FID_HORZSCROLL);
+ WinQueryWindowPos(hHScroll, &vSwpHScroll);
+ }
+ if (ulCreateFlags & FCF_VERTSCROLL)
+ {
+ hVScroll = WinWindowFromID(hFrame, FID_VERTSCROLL);
+ WinQueryWindowPos(hVScroll, &vSwpVScroll);
+ }
+ if (!::WinSetWindowPos( hClient
+ ,HWND_TOP
+ ,SV_CXSIZEBORDER
+ ,(SV_CYSIZEBORDER - 1) + vSwpHScroll.cy
+ ,vSwp.cx - ((SV_CXSIZEBORDER * 2) + vSwpVScroll.cx)
+ ,vSwp.cy - ((SV_CYSIZEBORDER * 2) + 1 + vSwpTitlebar.cy + vSwpHScroll.cy)
+ ,SWP_SIZE | SWP_MOVE
+ ))
+ return FALSE;
+ WinQueryWindowPos(hClient, &vSwp);
+ ::WinShowWindow(hClient, TRUE);