/**************************************************************************** * NameViewWndProc Message Cracker Callback Functions * * Purpose: * Functions to process each message received by the Container WndProc. * This is a Win16/Win32 portable method for message handling. * * Return Value: * Varies according to the message being processed. ****************************************************************************/ BOOL Nam_OnNCCreate( HWND hWnd, LPCREATESTRUCT lpCreateStruct ) { LPCONTAINER lpCntNew, lpCntOld; // Get the existing container struct being passed in the create params. lpCntOld = (LPCONTAINER) lpCreateStruct->lpCreateParams; // If we are creating a split child alloc a new struct and load it. if( StateTest( lpCntOld, CNTSTATE_CREATINGSB ) ) { lpCntNew = (LPCONTAINER) calloc( 1, LEN_CONTAINER ); if( lpCntNew == NULL ) return 0L; // Save the container pointer in the window extra bytes. SetWindowLong( hWnd, GWL_CONTAINERHMEM, (LONG)lpCntNew ); // Load up the new container struct with the already existing // info that is in the passed in container struct. *lpCntNew = *lpCntOld; // Flag that the container is now in a split state. lpCntNew->bIsSplit = TRUE; // Clear out all initial states. StateClear( lpCntNew, CNTSTATE_ALL ); // If the 1st child is deferring paints, set it for the split wnd. if( StateTest( lpCntOld, CNTSTATE_DEFERPAINT ) ) StateSet( lpCntNew, CNTSTATE_DEFERPAINT ); } else { // Do not alloc a new container struct since we are creating the // 1st child and it shares the same one as the frame window. // All other split children alloc their own container structs. // Save the old container pointer in the window extra bytes. SetWindowLong( hWnd, GWL_CONTAINERHMEM, (LONG)lpCntOld ); } return FORWARD_WM_NCCREATE( hWnd, lpCreateStruct, CNT_DEFWNDPROC ); }
BOOL CScene::OnNCCreate(HWND hWnd, CREATESTRUCT FAR* lpCreateStruct) /***********************************************************************/ { Attach(hWnd); return FORWARD_WM_NCCREATE(hWnd, lpCreateStruct, m_lpOldWndProc); }