home *** CD-ROM | disk | FTP | other *** search
- HWND APIENTRY WinCreateStdWindow( hwndParent, flStyle, pCtlData,
- pszClassClient, pszTitle,
- flStyleClient, hmod, idResources,
- phwndClient )
- HWND hwndParent;
- ULONG flStyle, flStyleClient;
- PVOID pCtlData;
- PSZ pszClassClient, pszTitle;
- HMODULE hmod;
- USHORT idResources;
- PHWND phwndClient;
- {
- HWND hwndFrame, hwndClient;
- SHORT x, y, cx, cy;
- ULONG flFrameFlags;
-
- /* Pick up frame flags, take care of special hwndParent values */
-
- flFrameFlags = ( pCtlData ? *(PULONG)pCtlData : 0 );
-
- if( ! hwndParent || hwndParent == HWND_DESKTOP )
- hwndParent = _hwndDesktop;
-
- ASSERT( hwndParent == _hwndDesktop,
- "WinCreateStdWindow: Must be a top level window" );
- ASSERT( ! hmod,
- "WinCreateStdWindow: hmod must be NULL" );
- ASSERT( ! (flStyle & WS_CLIPCHILDREN),
- "WinCreateStdWindow: WS_CLIPCHILDREN not allowed" );
-
- /* Assign default position if visible */
-
- if( flStyle & WS_VISIBLE )
- {
- x = 10; /* TEMP HACK */
- y = screenBits.bounds.bottom - 200;
- cx = 250;
- cy = 150;
- }
- else
- x = y = cx = cy = 0;
-
- /* Create the frame window itself */
-
- hwndFrame =
- WinCreateWindow( hwndParent, WC_FRAME, _szNull,
- flStyle & ~WS_VISIBLE, x, y, cx, cy,
- NULL, HWND_TOP, idResources, pCtlData, NULL );
-
- if( ! hwndFrame )
- return NULL;
-
- /* Create frame controls according to flFrameFlags */
-
- MpmFrameUpdate( hwndFrame, flFrameFlags );
-
- /* Create client window if requested */
-
- if( pszClassClient && *pszClassClient )
- {
- *phwndClient = hwndClient =
- WinCreateWindow(
- hwndFrame, pszClassClient, _szNull, flStyleClient,
- 0, 0, 0, 0, hwndFrame, HWND_BOTTOM, FID_CLIENT, NULL, NULL
- );
- if( ! hwndClient )
- goto exitDestroy;
- }
-
- /* Create menu and initialize title */
-
- if( flFrameFlags & FCF_MENU )
- if( ! MpmMenuLoad( hwndFrame, idResources ) )
- goto exitDestroy;
-
- if( flFrameFlags & FCF_TITLEBAR )
- WinSetWindowText( hwndFrame, pszTitle );
-
- /* Make window visible if requested */
-
- if( flStyle & WS_VISIBLE )
- {
- WinSendMsg( hwndFrame, WM_FORMATFRAME, 0L, 0L );
- WinShowWindow( hwndFrame, TRUE );
- }
-
- return hwndFrame;
-
- exitDestroy:
- if( pszClassClient && *pszClassClient )
- *phwndClient = NULL;
- WinDestroyWindow( hwndFrame );
- return NULL;
- }
-