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

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

?? dxutil.cpp

?? 3D俄羅斯方塊源碼.rar
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//-----------------------------------------------------------------------------
// File: DXUtil.cpp
//
// Desc: Shortcut macros and functions for using DX objects
//
//
// Copyright (c) 1997-2001 Microsoft Corporation. All rights reserved
//-----------------------------------------------------------------------------
#define STRICT
#include <windows.h>
#include <mmsystem.h>
#include <tchar.h>
#include <stdio.h> 
#include <stdarg.h>
#include "DXUtil.h"




//-----------------------------------------------------------------------------
// Name: DXUtil_GetDXSDKMediaPath()
// Desc: Returns the DirectX SDK media path
//-----------------------------------------------------------------------------
const TCHAR* DXUtil_GetDXSDKMediaPath()
{
    static TCHAR strNull[2] = _T("");
    static TCHAR strPath[MAX_PATH];
    DWORD dwType;
    DWORD dwSize = MAX_PATH;
    HKEY  hKey;

    // Open the appropriate registry key
    LONG lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
                                _T("Software\\Microsoft\\DirectX SDK"),
                                0, KEY_READ, &hKey );
    if( ERROR_SUCCESS != lResult )
        return strNull;

    lResult = RegQueryValueEx( hKey, _T("DX81SDK Samples Path"), NULL,
                              &dwType, (BYTE*)strPath, &dwSize );
    RegCloseKey( hKey );

    if( ERROR_SUCCESS != lResult )
        return strNull;

    _tcscat( strPath, _T("\\Media\\") );

    return strPath;
}




//-----------------------------------------------------------------------------
// Name: DXUtil_FindMediaFile()
// Desc: Returns a valid path to a DXSDK media file
//-----------------------------------------------------------------------------
HRESULT DXUtil_FindMediaFile( TCHAR* strPath, TCHAR* strFilename )
{
    HANDLE file;
    TCHAR strFullPath[1024];
    TCHAR *strShortName;
    DWORD cchPath;

    if( NULL==strFilename || NULL==strPath )
        return E_INVALIDARG;

    // Build full path name from strFileName (strShortName will be just the leaf filename)
    cchPath = GetFullPathName(strFilename, sizeof(strFullPath)/sizeof(TCHAR), strFullPath, &strShortName);
    if ((cchPath == 0) || (sizeof(strFullPath)/sizeof(TCHAR) <= cchPath))
        return E_FAIL;

    // first try to find the filename given a full path
    file = CreateFile( strFullPath, GENERIC_READ, FILE_SHARE_READ, NULL, 
                       OPEN_EXISTING, 0, NULL );
    if( INVALID_HANDLE_VALUE != file )
    {
        _tcscpy( strPath, strFullPath );
        CloseHandle( file );
        return S_OK;
    }
    
    // next try to find the filename in the current working directory (path stripped)
    file = CreateFile( strShortName, GENERIC_READ, FILE_SHARE_READ, NULL, 
                       OPEN_EXISTING, 0, NULL );
    if( INVALID_HANDLE_VALUE != file )
    {
        _tcscpy( strPath, strShortName );
        CloseHandle( file );
        return S_OK;
    }
    
    // last, check if the file exists in the media directory
    _stprintf( strPath, _T("%s%s"), DXUtil_GetDXSDKMediaPath(), strShortName );

    file = CreateFile( strPath, GENERIC_READ, FILE_SHARE_READ, NULL, 
                       OPEN_EXISTING, 0, NULL );
    if( INVALID_HANDLE_VALUE != file )
    {
        CloseHandle( file );
        return S_OK;
    }

    // On failure, just return the file as the path
    _tcscpy( strPath, strFilename );
    return E_FAIL;
}




//-----------------------------------------------------------------------------
// Name: DXUtil_ReadStringRegKey()
// Desc: Helper function to read a registry key string
//-----------------------------------------------------------------------------
HRESULT DXUtil_ReadStringRegKey( HKEY hKey, TCHAR* strRegName, TCHAR* strValue, 
                                 DWORD dwLength, TCHAR* strDefault )
{
    DWORD dwType;

    if( ERROR_SUCCESS != RegQueryValueEx( hKey, strRegName, 0, &dwType, 
                                          (BYTE*)strValue, &dwLength ) )
    {
        _tcscpy( strValue, strDefault );
    }

    return S_OK;
}




//-----------------------------------------------------------------------------
// Name: DXUtil_WriteStringRegKey()
// Desc: Helper function to write a registry key string
//-----------------------------------------------------------------------------
HRESULT DXUtil_WriteStringRegKey( HKEY hKey, TCHAR* strRegName,
                                  TCHAR* strValue )
{
    if( ERROR_SUCCESS != RegSetValueEx( hKey, strRegName, 0, REG_SZ, 
                                        (BYTE*)strValue, 
                                        (_tcslen(strValue)+1)*sizeof(TCHAR) ) )
        return E_FAIL;

    return S_OK;
}




//-----------------------------------------------------------------------------
// Name: DXUtil_ReadIntRegKey()
// Desc: Helper function to read a registry key int
//-----------------------------------------------------------------------------
HRESULT DXUtil_ReadIntRegKey( HKEY hKey, TCHAR* strRegName, DWORD* pdwValue, 
                              DWORD dwDefault )
{
    DWORD dwType;
    DWORD dwLength = sizeof(DWORD);

    if( ERROR_SUCCESS != RegQueryValueEx( hKey, strRegName, 0, &dwType, 
                                          (BYTE*)pdwValue, &dwLength ) )
    {
        *pdwValue = dwDefault;
    }

    return S_OK;
}




//-----------------------------------------------------------------------------
// Name: DXUtil_WriteIntRegKey()
// Desc: Helper function to write a registry key int
//-----------------------------------------------------------------------------
HRESULT DXUtil_WriteIntRegKey( HKEY hKey, TCHAR* strRegName, DWORD dwValue )
{
    if( ERROR_SUCCESS != RegSetValueEx( hKey, strRegName, 0, REG_DWORD, 
                                        (BYTE*)&dwValue, sizeof(DWORD) ) )
        return E_FAIL;

    return S_OK;
}




//-----------------------------------------------------------------------------
// Name: DXUtil_ReadBoolRegKey()
// Desc: Helper function to read a registry key BOOL
//-----------------------------------------------------------------------------
HRESULT DXUtil_ReadBoolRegKey( HKEY hKey, TCHAR* strRegName, BOOL* pbValue, 
                              BOOL bDefault )
{
    DWORD dwType;
    DWORD dwLength = sizeof(BOOL);

    if( ERROR_SUCCESS != RegQueryValueEx( hKey, strRegName, 0, &dwType, 
                                          (BYTE*)pbValue, &dwLength ) )
    {
        *pbValue = bDefault;
    }

    return S_OK;
}




//-----------------------------------------------------------------------------
// Name: DXUtil_WriteBoolRegKey()
// Desc: Helper function to write a registry key BOOL
//-----------------------------------------------------------------------------
HRESULT DXUtil_WriteBoolRegKey( HKEY hKey, TCHAR* strRegName, BOOL bValue )
{
    if( ERROR_SUCCESS != RegSetValueEx( hKey, strRegName, 0, REG_DWORD, 
                                        (BYTE*)&bValue, sizeof(BOOL) ) )
        return E_FAIL;

    return S_OK;
}




//-----------------------------------------------------------------------------
// Name: DXUtil_ReadGuidRegKey()
// Desc: Helper function to read a registry key guid
//-----------------------------------------------------------------------------
HRESULT DXUtil_ReadGuidRegKey( HKEY hKey, TCHAR* strRegName, GUID* pGuidValue, 
                               GUID& guidDefault )
{
    DWORD dwType;
    DWORD dwLength = sizeof(GUID);

    if( ERROR_SUCCESS != RegQueryValueEx( hKey, strRegName, 0, &dwType, 
                                          (LPBYTE) pGuidValue, &dwLength ) )
    {
        *pGuidValue = guidDefault;
    }

    return S_OK;
}




//-----------------------------------------------------------------------------
// Name: DXUtil_WriteGuidRegKey()
// Desc: Helper function to write a registry key guid
//-----------------------------------------------------------------------------
HRESULT DXUtil_WriteGuidRegKey( HKEY hKey, TCHAR* strRegName, GUID guidValue )
{
    if( ERROR_SUCCESS != RegSetValueEx( hKey, strRegName, 0, REG_BINARY, 
                                        (BYTE*)&guidValue, sizeof(GUID) ) )
        return E_FAIL;

    return S_OK;
}




//-----------------------------------------------------------------------------
// Name: DXUtil_Timer()
// Desc: Performs timer opertations. Use the following commands:
//          TIMER_RESET           - to reset the timer
//          TIMER_START           - to start the timer
//          TIMER_STOP            - to stop (or pause) the timer
//          TIMER_ADVANCE         - to advance the timer by 0.1 seconds
//          TIMER_GETABSOLUTETIME - to get the absolute system time
//          TIMER_GETAPPTIME      - to get the current time
//          TIMER_GETELAPSEDTIME  - to get the time that elapsed between 
//                                  TIMER_GETELAPSEDTIME calls
//-----------------------------------------------------------------------------
FLOAT __stdcall DXUtil_Timer( TIMER_COMMAND command )
{
    static BOOL     m_bTimerInitialized = FALSE;
    static BOOL     m_bUsingQPF         = FALSE;
    static BOOL     m_bTimerStopped     = TRUE;
    static LONGLONG m_llQPFTicksPerSec  = 0;

    // Initialize the timer
    if( FALSE == m_bTimerInitialized )
    {
        m_bTimerInitialized = TRUE;

        // Use QueryPerformanceFrequency() to get frequency of timer.  If QPF is
        // not supported, we will timeGetTime() which returns milliseconds.
        LARGE_INTEGER qwTicksPerSec;
        m_bUsingQPF = QueryPerformanceFrequency( &qwTicksPerSec );
        if( m_bUsingQPF )
            m_llQPFTicksPerSec = qwTicksPerSec.QuadPart;
    }

    if( m_bUsingQPF )
    {
        static LONGLONG m_llStopTime        = 0;
        static LONGLONG m_llLastElapsedTime = 0;
        static LONGLONG m_llBaseTime        = 0;
        double fTime;
        double fElapsedTime;
        LARGE_INTEGER qwTime;
        
        // Get either the current time or the stop time, depending
        // on whether we're stopped and what command was sent
        if( m_llStopTime != 0 && command != TIMER_START && command != TIMER_GETABSOLUTETIME)
            qwTime.QuadPart = m_llStopTime;
        else
            QueryPerformanceCounter( &qwTime );

        // Return the elapsed time
        if( command == TIMER_GETELAPSEDTIME )
        {
            fElapsedTime = (double) ( qwTime.QuadPart - m_llLastElapsedTime ) / (double) m_llQPFTicksPerSec;
            m_llLastElapsedTime = qwTime.QuadPart;
            return (FLOAT) fElapsedTime;
        }
    
        // Return the current time
        if( command == TIMER_GETAPPTIME )
        {
            double fAppTime = (double) ( qwTime.QuadPart - m_llBaseTime ) / (double) m_llQPFTicksPerSec;
            return (FLOAT) fAppTime;
        }
    
        // Reset the timer
        if( command == TIMER_RESET )
        {
            m_llBaseTime        = qwTime.QuadPart;
            m_llLastElapsedTime = qwTime.QuadPart;
            m_llStopTime        = 0;
            m_bTimerStopped     = FALSE;
            return 0.0f;
        }
    
        // Start the timer
        if( command == TIMER_START )
        {
            if( m_bTimerStopped )
                m_llBaseTime += qwTime.QuadPart - m_llStopTime;
            m_llStopTime = 0;
            m_llLastElapsedTime = qwTime.QuadPart;
            m_bTimerStopped = FALSE;
            return 0.0f;
        }
    
        // Stop the timer
        if( command == TIMER_STOP )
        {
            m_llStopTime = qwTime.QuadPart;
            m_llLastElapsedTime = qwTime.QuadPart;
            m_bTimerStopped = TRUE;
            return 0.0f;
        }
    
        // Advance the timer by 1/10th second
        if( command == TIMER_ADVANCE )
        {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜久久久久中文字幕久| 久久狠狠亚洲综合| 美日韩黄色大片| 91在线精品一区二区三区| 69久久夜色精品国产69蝌蚪网| 欧美精品一区二区三区久久久| 亚洲制服丝袜av| 不卡视频在线观看| 久久久影视传媒| 久久超碰97人人做人人爱| 欧美色图一区二区三区| 中日韩av电影| 国产成人aaaa| 久久影院视频免费| 美日韩一区二区| 3d动漫精品啪啪1区2区免费| 亚洲一区二区三区美女| 成人av手机在线观看| 欧美高清在线一区| 国产福利一区二区三区视频在线| 欧美电影免费观看高清完整版在线观看 | 日韩一区二区免费电影| 伊人色综合久久天天人手人婷| 不卡的av中国片| 国产精品灌醉下药二区| 成人h动漫精品一区二| 国产香蕉久久精品综合网| 国产精品自在欧美一区| 国产视频一区在线播放| 国产一区二区三区在线观看免费视频 | 久久福利视频一区二区| 8x福利精品第一导航| 丝袜亚洲另类欧美| 欧美丰满美乳xxx高潮www| 无码av免费一区二区三区试看 | 日韩精品三区四区| 日韩午夜av一区| 久久国产精品色婷婷| 2023国产精品自拍| 国产福利91精品| 国产精品短视频| 欧美性欧美巨大黑白大战| 亚洲一区二区四区蜜桃| 欧美日韩夫妻久久| 蜜桃视频在线观看一区| 久久精品视频在线免费观看| 国产麻豆精品在线观看| 中文字幕五月欧美| 欧美日韩高清一区| 国产主播一区二区| 国产精品天美传媒| 91黄色免费版| 日韩激情av在线| 国产午夜一区二区三区| www.欧美日韩国产在线| 亚洲一区二区三区国产| 精品国产凹凸成av人导航| 国产91精品免费| 一区二区成人在线观看| 日韩精品一区二区三区在线观看| 风间由美一区二区三区在线观看 | 久久精品视频一区二区三区| 欧美三级在线看| 日韩精品一二三| 中文字幕欧美国产| 欧美三级日韩三级国产三级| 国产一区二区精品久久| 悠悠色在线精品| 久久婷婷国产综合精品青草| 色香蕉成人二区免费| 麻豆91免费观看| 亚洲青青青在线视频| 91精品蜜臀在线一区尤物| 成人综合在线观看| 日韩精品欧美精品| 亚洲男人天堂一区| 久久久久国产精品厨房| 欧美日韩免费观看一区三区| 成人丝袜18视频在线观看| 日本成人在线网站| 一区二区三区日韩欧美| 久久久久88色偷偷免费| 欧美亚洲综合另类| av在线一区二区三区| 蜜臀av国产精品久久久久| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美一区二区三区小说| 色综合网站在线| 国产精品乡下勾搭老头1| 视频一区二区三区中文字幕| 日韩一区在线播放| 国产欧美日韩精品一区| 这里只有精品99re| 色久优优欧美色久优优| 成人性视频网站| 国产精品一区二区久久精品爱涩 | 亚洲国产精品久久艾草纯爱| 中文一区二区完整视频在线观看| 日韩一二在线观看| 欧美日韩国产在线播放网站| 91免费在线看| av成人免费在线观看| 国产麻豆午夜三级精品| 开心九九激情九九欧美日韩精美视频电影 | 91九色02白丝porn| 99re成人精品视频| 99re热这里只有精品视频| 国产成人激情av| 粉嫩嫩av羞羞动漫久久久| 国产馆精品极品| 国产成人午夜精品5599| 国产剧情av麻豆香蕉精品| 久久99精品久久久久久久久久久久| 日韩在线一二三区| 男女男精品网站| 久久国产精品露脸对白| 麻豆成人在线观看| 狠狠色丁香婷综合久久| 国产一区二区三区免费观看| 国产精品小仙女| av中文字幕亚洲| 在线免费亚洲电影| 欧美日韩精品高清| 日韩一级二级三级精品视频| 欧美一级夜夜爽| 久久尤物电影视频在线观看| 久久精品一区二区三区四区| 国产精品免费丝袜| 亚洲一区视频在线| 久久精品理论片| 成人高清视频在线观看| 91丨porny丨国产入口| 欧美视频中文一区二区三区在线观看 | 午夜精品国产更新| 麻豆精品久久久| 成人国产一区二区三区精品| 99国产欧美另类久久久精品| 欧美亚日韩国产aⅴ精品中极品| 在线观看91精品国产麻豆| 欧美电影免费观看高清完整版在线 | 国产精品无人区| 亚洲欧美激情小说另类| 天堂一区二区在线| 激情文学综合丁香| 色婷婷久久久综合中文字幕 | 国产日韩影视精品| 亚洲一二三专区| 久久国产综合精品| 成人短视频下载| 3751色影院一区二区三区| 国产亚洲欧美日韩日本| 亚洲精品视频在线观看免费| 麻豆国产精品777777在线| 成人av免费在线| 日韩一区二区在线看片| 自拍偷拍欧美激情| 麻豆极品一区二区三区| 色综合久久九月婷婷色综合| 日韩精品一区二区三区四区| 亚洲精品欧美专区| 国产成人av电影在线观看| 欧美日本韩国一区| 国产精品久久久久三级| 精品夜夜嗨av一区二区三区| 欧美伊人久久久久久久久影院 | 99在线热播精品免费| 91精品久久久久久久久99蜜臂| 国产精品久久久久毛片软件| 久久国产成人午夜av影院| 欧美综合色免费| 国产精品久久看| 国产精品综合久久| 欧美xxxxxxxxx| 丝袜诱惑制服诱惑色一区在线观看| 国产·精品毛片| 日韩欧美国产综合在线一区二区三区 | 日本一二三四高清不卡| 日韩av一区二区在线影视| 91女神在线视频| 国产精品日韩成人| 国模无码大尺度一区二区三区| 在线不卡中文字幕播放| 一区二区在线免费观看| 国产91高潮流白浆在线麻豆| 亚洲欧美日韩一区二区| 久久成人免费网站| 日韩一区二区中文字幕| 亚洲成人一区二区| 在线观看亚洲一区| 亚洲激情综合网| 色狠狠一区二区| 亚洲精品欧美二区三区中文字幕| av激情成人网| 亚洲嫩草精品久久| 91搞黄在线观看| 亚洲国产一二三| 欧美一区二区三区在线视频| 男女性色大片免费观看一区二区| 欧美精品丝袜久久久中文字幕| 日韩1区2区3区|