Exemple #1
0
//--------------------------------------------------------------------------------------
// 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;
    }

}
Exemple #2
0
//-----------------------------------------------------------------------------
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 );
}
Exemple #3
0
//-----------------------------------------------------------------------------
// 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 
}