亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? d3dsaver.cpp

?? VC游戲編程基礎
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
// Desc: This function forwards all window messages to SaverProc, which has
//       access to the "this" pointer.
//-----------------------------------------------------------------------------
LRESULT CALLBACK CD3DScreensaver::SaverProcStub( HWND hWnd, UINT uMsg,
                                                 WPARAM wParam, LPARAM lParam )
{
    return s_pD3DScreensaver->SaverProc( hWnd, uMsg, wParam, lParam );
}




//-----------------------------------------------------------------------------
// Name: SaverProc()
// Desc: Handle window messages for main screensaver windows (one per screen).
//-----------------------------------------------------------------------------
LRESULT CD3DScreensaver::SaverProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    switch ( uMsg )
        {
        case WM_USER:
            // All initialization messages have gone through.  Allow
            // 500ms of idle time, then proceed with initialization.
            SetTimer( hWnd, 1, 500, NULL );
            break;

        case WM_TIMER:
            // Initial idle time is done, proceed with initialization.
            m_bWaitForInputIdle = FALSE;
            KillTimer( hWnd, 1 );
            break;

        case WM_DESTROY:
            ShutdownSaver();
            break;

        case WM_SETCURSOR:
            if ( m_SaverMode == sm_full && !m_bCheckingSaverPassword )
            {
                // Hide cursor
                SetCursor( NULL );
                return TRUE;
            }
            break;

        case WM_PAINT:
        {
            // Show error message, if there is one
            PAINTSTRUCT ps;
            BeginPaint( hWnd, &ps );

            // In preview mode, just fill 
            // the preview window with black. 
            if( !m_bErrorMode && m_SaverMode == sm_preview )
            {
                RECT rc;
                GetClientRect(hWnd,&rc);
                FillRect(ps.hdc, &rc, (HBRUSH)GetStockObject(BLACK_BRUSH) );
            }
            else
            {
                DoPaint( hWnd, ps.hdc );
            }

            EndPaint( hWnd, &ps );
            return 0;
        }

        case WM_ERASEBKGND:
            // Erase background if checking password or if window is not
            // assigned to a render unit
            if( !m_bCheckingSaverPassword )
            {
                RenderUnit* pRenderUnit;
                D3DAdapterInfo* pD3DAdapterInfo;
                for( DWORD iRenderUnit = 0; iRenderUnit < m_dwNumRenderUnits; iRenderUnit++ )
                {
                    pRenderUnit = &m_RenderUnits[iRenderUnit];
                    pD3DAdapterInfo = m_Adapters[pRenderUnit->iAdapter];
                    if( pD3DAdapterInfo->hWndDevice == hWnd )
                        return TRUE; // don't erase this window
                }
            }
            break;

        case WM_MOUSEMOVE:
            if( m_SaverMode != sm_test )
            {
                static INT xPrev = -1;
                static INT yPrev = -1;
                INT xCur = GET_X_LPARAM(lParam);
                INT yCur = GET_Y_LPARAM(lParam);
                if( xCur != xPrev || yCur != yPrev )
                {
                    xPrev = xCur;
                    yPrev = yCur;
                    m_dwSaverMouseMoveCount++;
                    if ( m_dwSaverMouseMoveCount > 5 )
                        InterruptSaver();
                }
            }
            break;

        case WM_KEYDOWN:
        case WM_LBUTTONDOWN:
        case WM_RBUTTONDOWN:
        case WM_MBUTTONDOWN:
            if( m_SaverMode != sm_test )
                InterruptSaver();
            break;

        case WM_ACTIVATEAPP:
            if( wParam == FALSE && m_SaverMode != sm_test )
                InterruptSaver();
            break;

        case WM_POWERBROADCAST:
            if( wParam == PBT_APMSUSPEND && m_VerifySaverPassword == NULL )
                InterruptSaver();
            break;

        case WM_SYSCOMMAND: 
            if ( m_SaverMode == sm_full )
            {
                switch ( wParam )
                {
                    case SC_NEXTWINDOW:
                    case SC_PREVWINDOW:
                    case SC_SCREENSAVE:
                    case SC_CLOSE:
                        return FALSE;
                };
            }
            break;
    }

    return DefWindowProc( hWnd, uMsg, wParam, lParam );
}




//-----------------------------------------------------------------------------
// Name: InterruptSaver()
// Desc: A message was received (mouse move, keydown, etc.) that may mean
//       the screen saver should show the password dialog and/or shut down.
//-----------------------------------------------------------------------------
VOID CD3DScreensaver::InterruptSaver()
{
    HRESULT hr;
    DWORD iRenderUnit;
    RenderUnit* pRenderUnit;
    BOOL bPasswordOkay = FALSE;

    if( m_SaverMode == sm_test ||
        m_SaverMode == sm_full && !m_bCheckingSaverPassword )
    {
        if( m_bIs9x && m_SaverMode == sm_full )
        {
            // If no VerifyPassword function, then no password is set 
            // or we're not on 9x. 
            if ( m_VerifySaverPassword != NULL )
            {
                // Shut down all D3D devices so we can show a Windows dialog
                for( iRenderUnit = 0; iRenderUnit < m_dwNumRenderUnits; iRenderUnit++ )
                {
                    pRenderUnit = &m_RenderUnits[iRenderUnit];
                    SwitchToRenderUnit(iRenderUnit);
                    if( pRenderUnit->bDeviceObjectsRestored )
                    {
                        InvalidateDeviceObjects();
                        pRenderUnit->bDeviceObjectsRestored = FALSE;
                    }
                    if( pRenderUnit->bDeviceObjectsInited )
                    {
                        DeleteDeviceObjects();
                        pRenderUnit->bDeviceObjectsInited = FALSE;
                    }
                    SAFE_RELEASE(pRenderUnit->pd3dDevice);
                }

                // Make sure all adapter windows cover the whole screen,
                // even after deleting D3D devices (which may have caused
                // mode changes)
                D3DAdapterInfo* pD3DAdapterInfo;
                for( DWORD iAdapter = 0; iAdapter < m_dwNumAdapters; iAdapter++ )
                {
                    pD3DAdapterInfo = m_Adapters[iAdapter];
                    ShowWindow( pD3DAdapterInfo->hWndDevice, SW_RESTORE );
                    ShowWindow( pD3DAdapterInfo->hWndDevice, SW_MAXIMIZE );
                }

                m_bCheckingSaverPassword = TRUE;

                bPasswordOkay = m_VerifySaverPassword( m_hWnd );

                m_bCheckingSaverPassword = FALSE;

                if ( bPasswordOkay )
                {
                    // D3D devices are all torn down, so it's safe
                    // to discard all render units now (so we don't
                    // try to clean them up again later).
                    m_dwNumRenderUnits = 0;
                }
                else
                {
                    // Back to screen saving...
                    SetCursor( NULL );
                    m_dwSaverMouseMoveCount = 0;

                    // Recreate all D3D devices
                    for( iRenderUnit = 0; iRenderUnit < m_dwNumRenderUnits; iRenderUnit++ )
                    {
                        pRenderUnit = &m_RenderUnits[iRenderUnit];
                        hr = m_pD3D->CreateDevice(pRenderUnit->iAdapter, 
                            pRenderUnit->DeviceType, m_hWnd, 
                            pRenderUnit->dwBehavior, &pRenderUnit->d3dpp, 
                            &pRenderUnit->pd3dDevice );
                        if( FAILED( hr ) )
                        {
                            m_bErrorMode = TRUE;
                            m_hrError = D3DAPPERR_CREATEDEVICEFAILED;
                        }
                        else
                        {
                            SwitchToRenderUnit(iRenderUnit);
                            if( FAILED(hr = InitDeviceObjects() ) )
                            {
                                m_bErrorMode = TRUE;
                                m_hrError = D3DAPPERR_INITDEVICEOBJECTSFAILED;
                            }
                            else 
                            {
                                pRenderUnit->bDeviceObjectsInited = TRUE;
                                if( FAILED(hr = RestoreDeviceObjects() ) )
                                {
                                    m_bErrorMode = TRUE;
                                    m_hrError = D3DAPPERR_INITDEVICEOBJECTSFAILED;
                                }
                                else
                                {
                                    pRenderUnit->bDeviceObjectsRestored = TRUE;
                                }
                            }
                        }
                    }

                    return;
                }
            }
        }
        ShutdownSaver();
    }
}




//-----------------------------------------------------------------------------
// Name: Initialize3DEnvironment()
// Desc: Set up D3D device(s)
//-----------------------------------------------------------------------------
HRESULT CD3DScreensaver::Initialize3DEnvironment()
{
    HRESULT hr;
    DWORD iAdapter;
    DWORD iMonitor;
    D3DAdapterInfo* pD3DAdapterInfo;
    MonitorInfo* pMonitorInfo;
    DWORD iRenderUnit;
    RenderUnit* pRenderUnit;
    MONITORINFO monitorInfo;

    if ( m_SaverMode == sm_full )
    {
        // Fullscreen mode.  Create a RenderUnit for each monitor (unless 
        // the user wants it black)
        m_bWindowed = FALSE;

        if( m_bOneScreenOnly )
        {
            // Set things up to only create a RenderUnit on the best device
            for( iAdapter = 0; iAdapter < m_dwNumAdapters; iAdapter++ )
            {
                pD3DAdapterInfo = m_Adapters[iAdapter];
                pD3DAdapterInfo->bLeaveBlack = TRUE;
            }
            GetBestAdapter( &iAdapter );
            if( iAdapter == NO_ADAPTER )
            {
                m_bErrorMode = TRUE;
                m_hrError = D3DAPPERR_NOCOMPATIBLEDEVICES;
            }
            else
            {
                pD3DAdapterInfo = m_Adapters[iAdapter];
                pD3DAdapterInfo->bLeaveBlack = FALSE;
            }
        }

        for( iMonitor = 0; iMonitor < m_dwNumMonitors; iMonitor++ )
        {
            pMonitorInfo = &m_Monitors[iMonitor];
            iAdapter = pMonitorInfo->iAdapter;
            if( iAdapter == NO_ADAPTER )
                continue; 
            pD3DAdapterInfo = m_Adapters[iAdapter];
            if( pD3DAdapterInfo->bDisableHW && !pD3DAdapterInfo->bHasAppCompatSW &&
                !m_bAllowRef )
            {
                pD3DAdapterInfo->bLeaveBlack = TRUE;
            }
            if( !pD3DAdapterInfo->bLeaveBlack && pD3DAdapterInfo->dwNumDevices > 0 )
            {
                pD3DAdapterInfo->hWndDevice = pMonitorInfo->hWnd;
                pRenderUnit = &m_RenderUnits[m_dwNumRenderUnits++];
                ZeroMemory( pRenderUnit, sizeof(RenderUnit) );
                pRenderUnit->iAdapter = iAdapter;
                if( FAILED( hr = CreateFullscreenRenderUnit( pRenderUnit ) ) )
                {
                    // skip this render unit and leave screen blank
                    m_dwNumRenderUnits--;
                    m_bErrorMode = TRUE;
                    m_hrError = D3DAPPERR_CREATEDEVICEFAILED;
                }
            }
        }
    }
    else 
    {
        // Windowed mode, for test mode or preview window.  Just need one RenderUnit.
        m_bWindowed = TRUE;

        GetClientRect( m_hWnd, &m_rcRenderTotal );
        GetClientRect( m_hWnd, &m_rcRenderCurDevice );

        GetBestAdapter( &iAdapter );
        if( iAdapter == NO_ADAPTER )
        {
            m_bErrorMode = TRUE;
            m_hrError = D3DAPPERR_CREATEDEVICEFAILED;
        }
        else
        {
            pD3DAdapterInfo = m_Adapters[iAdapter];
            pD3DAdapterInfo->hWndDevice = m_hWnd;
        }
        if( !m_bErrorMode )
        {
            pRenderUnit = &m_RenderUnits[m_dwNumRenderUnits++];
            ZeroMemory( pRenderUnit, sizeof(RenderUnit) );
            pRenderUnit->iAdapter = iAdapter;
            if( FAILED( hr = CreateWindowedRenderUnit( pRenderUnit ) ) )
            {
                m_dwNumRenderUnits--;
                m_bErrorMode = TRUE;
                if( m_SaverMode == sm_preview )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情综合网| 欧美美女黄视频| 国产欧美一区二区在线观看| 国产在线不卡一区| 国产午夜精品久久久久久久| 国产成人福利片| 亚洲欧美一区二区三区国产精品| 99re视频这里只有精品| 亚洲女人小视频在线观看| 91久久国产最好的精华液| 亚洲123区在线观看| 欧美一区二区三区免费在线看| 麻豆91精品91久久久的内涵| 亚洲精品在线电影| 成人av免费在线观看| 亚洲永久精品国产| 91精品免费在线| 国产精品88888| 亚洲欧洲国产日本综合| 欧美日韩一二三区| 国产精品一区二区久激情瑜伽| 中文字幕中文字幕在线一区| 欧美性猛交xxxxxxxx| 久久精品久久综合| 亚洲欧美在线观看| 欧美一区二区三区视频在线 | 粉嫩久久99精品久久久久久夜| 国产精品久久久久久久第一福利| 一本一道综合狠狠老| 理论片日本一区| 亚洲免费av高清| 日韩欧美一二三区| 99久久精品国产毛片| 免费成人小视频| 亚洲人一二三区| 日韩欧美一卡二卡| 在线视频欧美精品| 国产乱码精品一区二区三区五月婷| 国产精品女主播在线观看| 欧美日韩国产免费| 成人午夜激情片| 六月丁香综合在线视频| 亚洲精品一二三| 久久精品视频网| 欧美美女喷水视频| 99re亚洲国产精品| 国产宾馆实践打屁股91| 日韩精品视频网| 亚洲裸体在线观看| 久久久99精品久久| 日韩女优av电影在线观看| 在线观看国产一区二区| 国产麻豆精品一区二区| 婷婷国产v国产偷v亚洲高清| 最新欧美精品一区二区三区| 久久日韩精品一区二区五区| 欧美日产在线观看| 欧美主播一区二区三区美女| 99re视频这里只有精品| 国产成人免费视频精品含羞草妖精| 免费av网站大全久久| 亚洲国产成人精品视频| 亚洲伦理在线免费看| 中文字幕制服丝袜成人av| 久久久不卡影院| 精品免费视频一区二区| 日韩精品在线网站| 欧美蜜桃一区二区三区| 在线观看日韩高清av| 91老师片黄在线观看| 国产成人一区在线| 黄色成人免费在线| 美女视频黄频大全不卡视频在线播放| 亚洲在线成人精品| 亚洲一区电影777| 国产精品美女久久久久久久久| 欧美日韩大陆一区二区| 欧美老肥妇做.爰bbww视频| 亚洲福中文字幕伊人影院| 国产亚洲婷婷免费| 日韩一级成人av| 日韩欧美一区二区三区在线| 日韩免费在线观看| 欧美一区二区久久| 精品国产免费视频| 久久久一区二区三区捆绑**| ww亚洲ww在线观看国产| 久久久精品黄色| 国产精品无码永久免费888| 欧美国产欧美综合| 中文字幕五月欧美| 一二三区精品福利视频| 五月婷婷综合网| 蜜桃视频在线一区| 国产一区二区三区综合| 成人激情小说乱人伦| 99re热视频这里只精品| 在线亚洲一区二区| 欧美一级久久久久久久大片| 欧美xxxxx牲另类人与| 国产亚洲短视频| 自拍偷拍欧美精品| 亚洲一卡二卡三卡四卡无卡久久| 婷婷久久综合九色国产成人 | 日韩黄色一级片| 免费观看在线综合| 国产伦理精品不卡| 色综合视频在线观看| 欧美日韩一区二区电影| 日韩久久精品一区| 亚洲男人天堂一区| 丝袜国产日韩另类美女| 国产精品538一区二区在线| 色综合久久精品| 欧美一区二区大片| 国产午夜精品久久久久久久| 亚洲成人动漫精品| 国产中文一区二区三区| 欧美性生活大片视频| 欧美大度的电影原声| 1区2区3区欧美| 免费观看在线色综合| 99久久免费精品高清特色大片| 欧美福利视频一区| 国产精品蜜臀在线观看| 日日夜夜免费精品| 91免费看片在线观看| 欧美成人一级视频| 亚洲一区二区三区四区的| 国产电影精品久久禁18| 欧美男生操女生| 中文字幕制服丝袜一区二区三区| 日日噜噜夜夜狠狠视频欧美人 | 成人av网站在线| 日韩小视频在线观看专区| 成人欧美一区二区三区视频网页| 人人狠狠综合久久亚洲| 色综合久久66| 国产亚洲欧美日韩在线一区| 丝袜美腿亚洲一区| 91影院在线观看| 久久久国产精品麻豆| 蜜臀av性久久久久蜜臀aⅴ | 日日噜噜夜夜狠狠视频欧美人| 不卡的av电影| 亚洲国产精品ⅴa在线观看| 人人狠狠综合久久亚洲| 欧美三区在线观看| 亚洲色图在线播放| 国产91丝袜在线观看| 欧美电影免费观看高清完整版在线观看| 亚洲精品国产一区二区精华液| 国产成人免费视频网站| 久久噜噜亚洲综合| 男男gaygay亚洲| 欧美乱妇23p| 亚洲精品ww久久久久久p站| aaa欧美大片| 国产精品日产欧美久久久久| 国产一区二区毛片| 精品国产在天天线2019| 久热成人在线视频| 欧美一区二区啪啪| 午夜视频久久久久久| 欧美日本一区二区三区四区| 香蕉乱码成人久久天堂爱免费| 91久久人澡人人添人人爽欧美| 亚洲乱码中文字幕| 91成人看片片| 亚洲成人av一区二区三区| 日本韩国视频一区二区| 亚洲福利一二三区| 欧美人妖巨大在线| 日本vs亚洲vs韩国一区三区二区| 欧美日本视频在线| 日韩在线一区二区| 日韩欧美精品在线视频| 国产乱子轮精品视频| 欧美激情一区二区三区不卡 | 精品在线播放午夜| 欧美电影免费观看高清完整版在线观看| 麻豆91在线看| 久久这里只有精品首页| 成人三级伦理片| 中文字幕一区二区在线播放| 色综合久久中文字幕| 亚洲妇女屁股眼交7| 欧美一级xxx| 国产一区二区不卡| 亚洲欧美另类小说视频| 欧美亚洲国产一区在线观看网站| 日本欧美在线观看| 精品国产sm最大网站| 成人激情免费视频| 亚洲成人av免费| 久久久久久免费网| 色中色一区二区| 日韩主播视频在线| 国产日韩综合av| 欧美中文字幕一区二区三区|