//-------------------------------------------------------------------------------------- // Handles the GUI events //-------------------------------------------------------------------------------------- void CALLBACK OnGUIEvent( UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserContext ) { switch( nControlID ) { case IDC_TOGGLEFULLSCREEN: DXUTToggleFullScreen(); break; case IDC_TOGGLEREF: DXUTToggleREF(); break; case IDC_CHANGEDEVICE: g_SettingsDlg.SetActive( !g_SettingsDlg.IsActive() ); break; case IDC_ENABLE_PRESHADER: { g_bEnablePreshader = g_SampleUI.GetCheckBox( IDC_ENABLE_PRESHADER )->GetChecked(); if( DXUTGetD3D9Device() != NULL ) { OnLostDevice( NULL ); OnDestroyDevice( NULL ); OnCreateDevice( DXUTGetD3D9Device(), DXUTGetD3D9BackBufferSurfaceDesc(), NULL ); OnResetDevice( DXUTGetD3D9Device(), DXUTGetD3D9BackBufferSurfaceDesc(), NULL ); } break; } case IDC_ACTIVE_LIGHT: if( !g_LightControl[g_nActiveLight].IsBeingDragged() ) { g_nActiveLight++; g_nActiveLight %= g_nNumActiveLights; } break; case IDC_NUM_LIGHTS: if( !g_LightControl[g_nActiveLight].IsBeingDragged() ) { WCHAR sz[100]; swprintf_s( sz, 100, L"# Lights: %d", g_SampleUI.GetSlider( IDC_NUM_LIGHTS )->GetValue() ); g_SampleUI.GetStatic( IDC_NUM_LIGHTS_STATIC )->SetText( sz ); g_nNumActiveLights = g_SampleUI.GetSlider( IDC_NUM_LIGHTS )->GetValue(); g_nActiveLight %= g_nNumActiveLights; } break; case IDC_LIGHT_SCALE: g_fLightScale = ( float )( g_SampleUI.GetSlider( IDC_LIGHT_SCALE )->GetValue() * 0.10f ); WCHAR sz[100]; swprintf_s( sz, 100, L"Light scale: %0.2f", g_fLightScale ); g_SampleUI.GetStatic( IDC_LIGHT_SCALE_STATIC )->SetText( sz ); break; } }
//----------------------------------------------------------------------------- HRESULT CSkybox::OnCreateDevice( LPDIRECT3DDEVICE9 pd3dDevice, float fSize, WCHAR* strCubeMapFile, WCHAR* strEffectFileName ) { HRESULT hr; WCHAR strPath[MAX_PATH]; V_RETURN( DXUTFindDXSDKMediaFileCch( strPath, MAX_PATH, strCubeMapFile ) ); IDirect3DCubeTexture9* pCubeTexture = NULL; V_RETURN( D3DXCreateCubeTextureFromFileEx( pd3dDevice, strPath, D3DX_DEFAULT, 1, 0, D3DFMT_A16B16G16R16F, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, 0, NULL, NULL, &pCubeTexture ) ); return OnCreateDevice( pd3dDevice, fSize, pCubeTexture, strEffectFileName ); }
//----------------------------------------------------------------------------- // Name: MainDlgProc() // Desc: Handles dialog messages //----------------------------------------------------------------------------- INT_PTR CALLBACK MainDlgProc( HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_INITDIALOG: OnInitDialog( hDlg ); break; case WM_COMMAND: switch( LOWORD(wParam) ) { case IDCANCEL: EndDialog( hDlg, 0 ); break; case IDC_EXCLUSIVE: case IDC_NONEXCLUSIVE: case IDC_FOREGROUND: case IDC_BACKGROUND: case IDC_IMMEDIATE: case IDC_BUFFERED: UpdateUI( hDlg ); break; case IDM_CREATEDEVICE: case IDM_RELEASEDEVICE: case IDC_CREATEDEVICE: if( NULL == g_pMouse ) { if( FAILED( OnCreateDevice( hDlg ) ) ) { MessageBox( hDlg, _T("CreateDevice() failed. ") _T("The sample will now exit. "), _T("Mouse"), MB_ICONERROR | MB_OK ); FreeDirectInput(); } SetFocus( GetDlgItem( hDlg, IDC_CREATEDEVICE ) ); } else { FreeDirectInput(); } UpdateUI( hDlg ); break; default: return FALSE; // Message not handled } break; case WM_ENTERMENULOOP: // Release the device, so if we are in exclusive mode the // cursor will reappear if( g_pMouse ) { g_pMouse->Unacquire(); KillTimer( hDlg, 0 ); // Stop timer, so device is not re-acquired SetDlgItemText( hDlg, IDC_DATA, TEXT("Unacquired") ); } break; case WM_EXITMENULOOP: // Make sure the device is acquired when coming out of a menu loop if( g_pMouse ) { g_pMouse->Acquire(); SetTimer( hDlg, 0, 1000 / 12, NULL ); // Start timer again } break; case WM_ACTIVATE: if( WA_INACTIVE != wParam && g_pMouse ) { // Make sure the device is acquired, if we are gaining focus. g_pMouse->Acquire(); } break; case WM_TIMER: // Update the input device every timer message { BOOL bImmediate = ( IsDlgButtonChecked( hDlg, IDC_IMMEDIATE ) == BST_CHECKED ); if( bImmediate ) { if( FAILED( ReadImmediateData( hDlg ) ) ) { KillTimer( hDlg, 0 ); MessageBox( NULL, _T("Error Reading Input State. ") _T("The sample will now exit. "), _T("Mouse"), MB_ICONERROR | MB_OK ); EndDialog( hDlg, TRUE ); } } else { if( FAILED( ReadBufferedData( hDlg ) ) ) { KillTimer( hDlg, 0 ); MessageBox( NULL, _T("Error Reading Input State. ") _T("The sample will now exit. "), _T("Mouse"), MB_ICONERROR | MB_OK ); EndDialog( hDlg, TRUE ); } } } break; case WM_DESTROY: // Cleanup everything KillTimer( hDlg, 0 ); FreeDirectInput(); break; default: return FALSE; // Message not handled } return TRUE; // Message handled }