CRainDropper::CRainDropper () { OneTimeSceneInit (); }
//----------------------------------------------------------------------------- // Name: Create() // Desc: Here's what this function does: // - Checks to make sure app is still active (if fullscreen, etc) // - Checks to see if it is time to draw with DXUtil_Timer, if not, it just returns S_OK // - Calls FrameMove() to recalculate new positions // - Calls Render() to draw the new frame // - Updates some frame count statistics // - Calls m_pd3dDevice->Present() to display the rendered frame. //----------------------------------------------------------------------------- HRESULT CMyD3DApplication::Create( HINSTANCE hInstance) { HRESULT hr; // Create the Direct3D object m_pD3D = Direct3DCreate9( D3D_SDK_VERSION ); if( m_pD3D == NULL ) return DisplayErrorMsg( D3DAPPERR_NODIRECT3D, MSGERR_APPMUSTEXIT ); // Build a list of Direct3D adapters, modes and devices. The // ConfirmDevice() callback is used to confirm that only devices that // meet the app's requirements are considered. m_d3dEnumeration.SetD3D( m_pD3D ); m_d3dEnumeration.ConfirmDeviceCallback = ConfirmDeviceHelper; if( FAILED( hr = m_d3dEnumeration.Enumerate() ) ) { SAFE_RELEASE( m_pD3D ); return DisplayErrorMsg( hr, MSGERR_APPMUSTEXIT ); } // Unless a substitute hWnd has been specified, create a window to // render into if( m_hWnd == NULL) { // Register the windows class WNDCLASS wndClass = { 0, WndProc, 0, 0, hInstance, LoadIcon( hInstance, MAKEINTRESOURCE(IDI_MAIN_ICON) ), LoadCursor( NULL, IDC_ARROW ), (HBRUSH)GetStockObject(WHITE_BRUSH), NULL, _T("D3D Window") }; RegisterClass( &wndClass ); // Set the window's initial style m_dwWindowStyle = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX; HMENU hMenu = LoadMenu( hInstance, MAKEINTRESOURCE(IDR_MENU) ); // Set the window's initial width RECT rc; SetRect( &rc, 0, 0, m_dwCreationWidth, m_dwCreationHeight ); AdjustWindowRect( &rc, m_dwWindowStyle, ( hMenu != NULL ) ? true : false ); // Create the render window m_hWnd = CreateWindow( _T("D3D Window"), m_strWindowTitle, m_dwWindowStyle, CW_USEDEFAULT, CW_USEDEFAULT, (rc.right-rc.left), (rc.bottom-rc.top), 0, hMenu, hInstance, 0 ); } // The focus window can be a specified to be a different window than the // device window. If not, use the device window as the focus window. if( m_hWndFocus == NULL ) m_hWndFocus = m_hWnd; // Save window properties m_dwWindowStyle = GetWindowLong( m_hWnd, GWL_STYLE ); GetWindowRect( m_hWnd, &m_rcWindowBounds ); GetClientRect( m_hWnd, &m_rcWindowClient ); if( FAILED( hr = ChooseInitialD3DSettings() ) ) { SAFE_RELEASE( m_pD3D ); return DisplayErrorMsg( hr, MSGERR_APPMUSTEXIT ); } // Initialize the application timer DXUtil_Timer( TIMER_START ); // Initialize the app's custom scene stuff if( FAILED( hr = OneTimeSceneInit() ) ) { SAFE_RELEASE( m_pD3D ); return DisplayErrorMsg( hr, MSGERR_APPMUSTEXIT ); } // Initialize the 3D environment for the app if( FAILED( hr = Initialize3DEnvironment() ) ) { SAFE_RELEASE( m_pD3D ); return DisplayErrorMsg( hr, MSGERR_APPMUSTEXIT ); } // The app is ready to go Pause( false ); return S_OK; }
CSnowDropper::CSnowDropper () { OneTimeSceneInit (); }
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: ここにコードを挿入してください。 MSG msg; HACCEL hAccelTable; // グローバル文字列を初期化しています。 LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_GPANIM, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance); // アプリケーションの初期化を実行します: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } int ret; ret = OneTimeSceneInit(); if( ret ){ _ASSERT( 0 ); return FALSE; } hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_GPANIM)); // Now we're ready to recieve and process Windows messages. BOOL bGotMsg; //MSG msg; PeekMessage( &msg, NULL, 0U, 0U, PM_NOREMOVE ); while( WM_QUIT != msg.message ) { // Use PeekMessage() if the app is active, so we can use idle time to // render the scene. Else, use GetMessage() to avoid eating CPU time. // if( m_bActive ) bGotMsg = PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ); //else // bGotMsg = GetMessage( &msg, NULL, 0U, 0U ); if( bGotMsg ) { // Translate and dispatch the message if( 0 == TranslateAccelerator(msg.hwnd, hAccelTable, &msg) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } }else{ if( Render3DEnvironment() != 0 ){ SendMessage( msg.hwnd, WM_CLOSE, 0, 0 ); } } } E3DBye(); return (int) msg.wParam; }
//----------------------------------------------------------------------------- // Name: MsgProc() // Desc: Callback for all Windows messages //----------------------------------------------------------------------------- INT_PTR CMyApplication::MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { HRESULT hr; switch( msg ) { case WM_INITDIALOG: m_hWnd = hWnd; // Initialize the app's custom scene stuff if( FAILED( hr = OneTimeSceneInit() ) ) { DXTRACE_ERR( TEXT("OneTimeSceneInit"), hr ); MessageBox( hWnd, TEXT("Error initializing DirectInput. Sample will now exit."), TEXT("DirectInput Sample"), MB_OK | MB_ICONERROR ); PostQuitMessage( IDCANCEL ); return TRUE; } break; case WM_COMMAND: { switch( LOWORD(wParam) ) { case IDC_NUM_PLAYERS_COMBO: { if( HIWORD(wParam) == CBN_SELCHANGE ) { TCHAR strItem[MAX_PATH]; HWND hNumPlayers = GetDlgItem( m_hWnd, IDC_NUM_PLAYERS_COMBO ); int nCurSel = (int) SendMessage( hNumPlayers, CB_GETCURSEL, 0, 0 ); SendMessage( hNumPlayers, CB_GETLBTEXT, nCurSel, (LPARAM) strItem ); DWORD dwNumPlayers = _ttoi( strItem ); if( FAILED( hr = ChangeNumPlayers( dwNumPlayers, FALSE, FALSE ) ) ) { PostQuitMessage( IDCANCEL ); } } break; } case IDC_RESET_OWNERSHIP: ChangeNumPlayers( m_dwNumPlayers, TRUE, FALSE ); break; case IDC_RESET_MAPPINGS: ChangeNumPlayers( m_dwNumPlayers, FALSE, TRUE ); break; case IDCANCEL: PostQuitMessage( IDCANCEL ); break; case IDM_CONFIGINPUT: m_UserInput[0].bDoConfigureInput = TRUE; break; } break; } } return FALSE; }