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

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

?? dxutil.cpp

?? < VC++視頻音頻開發(fā)>> 這本書的源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#ifndef STRICT
#define STRICT
#endif 
#include <windows.h>
#include <mmsystem.h>
#include <tchar.h>
#include <stdio.h> 
#include <stdarg.h>
#include "DXUtil.h"
#ifdef UNICODE
    typedef HINSTANCE (WINAPI* LPShellExecute)(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd);
#else
    typedef HINSTANCE (WINAPI* LPShellExecute)(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd);
#endif
#ifndef UNDER_CE
HRESULT DXUtil_GetDXSDKMediaPathCch( TCHAR* strDest, int cchDest )
{
    if( strDest == NULL || cchDest < 1 )
        return E_INVALIDARG;
    lstrcpy( strDest, TEXT("") );
    
    HKEY  hKey;
    LONG lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
                                _T("Software\\Microsoft\\DirectX SDK"),
                                0, KEY_READ, &hKey );
    if( ERROR_SUCCESS != lResult )
        return E_FAIL;
    DWORD dwType;
    DWORD dwSize = cchDest * sizeof(TCHAR);
    lResult = RegQueryValueEx( hKey, _T("DX9SDK Samples Path"), NULL,
                              &dwType, (BYTE*)strDest, &dwSize );
    strDest[cchDest-1] = 0; 
    RegCloseKey( hKey );
    if( ERROR_SUCCESS != lResult )
        return E_FAIL;
    const TCHAR* strMedia = _T("\\Media\\");
    if( lstrlen(strDest) + lstrlen(strMedia) < cchDest )
        _tcscat( strDest, strMedia );
    else
        return E_INVALIDARG;
    return S_OK;
}
#endif 
#ifndef UNDER_CE
HRESULT DXUtil_FindMediaFileCch( TCHAR* strDestPath, int cchDest, TCHAR* strFilename )
{
    HRESULT hr;
    HANDLE file;
    TCHAR* strShortNameTmp = NULL;
    TCHAR strShortName[MAX_PATH];
    int cchPath;
    if( NULL==strFilename || NULL==strDestPath || cchDest < 1 )
        return E_INVALIDARG;
    lstrcpy( strDestPath, TEXT("") );
    lstrcpy( strShortName, TEXT("") );
    
    cchPath = GetFullPathName(strFilename, cchDest, strDestPath, &strShortNameTmp);
    if ((cchPath == 0) || (cchDest <= cchPath))
        return E_FAIL;
    if( strShortNameTmp )
        lstrcpyn( strShortName, strShortNameTmp, MAX_PATH );
    
    file = CreateFile( strDestPath, GENERIC_READ, FILE_SHARE_READ, NULL, 
                       OPEN_EXISTING, 0, NULL );
    if( INVALID_HANDLE_VALUE != file )
    {
        CloseHandle( file );
        return S_OK;
    }
    
    
    file = CreateFile( strShortName, GENERIC_READ, FILE_SHARE_READ, NULL, 
                       OPEN_EXISTING, 0, NULL );
    if( INVALID_HANDLE_VALUE != file )
    {
        _tcsncpy( strDestPath, strShortName, cchDest );
        strDestPath[cchDest-1] = 0; 
        CloseHandle( file );
        return S_OK;
    }
    
    
    if( FAILED( hr = DXUtil_GetDXSDKMediaPathCch( strDestPath, cchDest ) ) )
        return hr;
    if( lstrlen(strDestPath) + lstrlen(strShortName) < cchDest )
        lstrcat( strDestPath, strShortName );
    else
        return E_INVALIDARG;
    file = CreateFile( strDestPath, GENERIC_READ, FILE_SHARE_READ, NULL, 
                       OPEN_EXISTING, 0, NULL );
    if( INVALID_HANDLE_VALUE != file )
    {
        CloseHandle( file );
        return S_OK;
    }
    
    _tcsncpy( strDestPath, strFilename, cchDest );
    strDestPath[cchDest-1] = 0; 
    return HRESULT_FROM_WIN32( ERROR_FILE_NOT_FOUND );
}
#endif 
HRESULT DXUtil_ReadStringRegKeyCch( HKEY hKey, TCHAR* strRegName, TCHAR* strDest, 
                                    DWORD cchDest, TCHAR* strDefault )
{
    DWORD dwType;
    DWORD cbDest = cchDest * sizeof(TCHAR);
    if( ERROR_SUCCESS != RegQueryValueEx( hKey, strRegName, 0, &dwType, 
                                          (BYTE*)strDest, &cbDest ) )
    {
        _tcsncpy( strDest, strDefault, cchDest );
        strDest[cchDest-1] = 0;
        if( dwType != REG_SZ )
            return E_FAIL;
        return S_OK;
    }
    return E_FAIL;
}
HRESULT DXUtil_WriteStringRegKey( HKEY hKey, TCHAR* strRegName,
                                  TCHAR* strValue )
{
    if( NULL == strValue )
        return E_INVALIDARG;
        
    DWORD cbValue = ((DWORD)_tcslen(strValue)+1) * sizeof(TCHAR);
    if( ERROR_SUCCESS != RegSetValueEx( hKey, strRegName, 0, REG_SZ, 
                                        (BYTE*)strValue, cbValue ) )
        return E_FAIL;
    return S_OK;
}
HRESULT DXUtil_ReadIntRegKey( HKEY hKey, TCHAR* strRegName, DWORD* pdwDest, 
                              DWORD dwDefault )
{
    DWORD dwType;
    DWORD dwLength = sizeof(DWORD);
    if( ERROR_SUCCESS != RegQueryValueEx( hKey, strRegName, 0, &dwType, 
                                          (BYTE*)pdwDest, &dwLength ) )
    {
        *pdwDest = dwDefault;
        if( dwType != REG_DWORD )
            return E_FAIL;
        return S_OK;
    }
    return E_FAIL;
}
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;
}
HRESULT DXUtil_ReadBoolRegKey( HKEY hKey, TCHAR* strRegName, BOOL* pbDest, 
                              BOOL bDefault )
{
    DWORD dwType;
    DWORD dwLength = sizeof(BOOL);
    if( ERROR_SUCCESS != RegQueryValueEx( hKey, strRegName, 0, &dwType, 
                                          (BYTE*)pbDest, &dwLength ) )
    {
        *pbDest = bDefault;
        if( dwType != REG_DWORD )
            return E_FAIL;
        return S_OK;
    }
    return E_FAIL;
}
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;
}
HRESULT DXUtil_ReadGuidRegKey( HKEY hKey, TCHAR* strRegName, GUID* pGuidDest, 
                               GUID& guidDefault )
{
    DWORD dwType;
    DWORD dwLength = sizeof(GUID);
    if( ERROR_SUCCESS != RegQueryValueEx( hKey, strRegName, 0, &dwType, 
                                          (LPBYTE) pGuidDest, &dwLength ) )
    {
        *pGuidDest = guidDefault;
        if( dwType != REG_BINARY )
            return E_FAIL;
        return S_OK;
    }
    return E_FAIL;
}
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;
}
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;
    
    if( FALSE == m_bTimerInitialized )
    {
        m_bTimerInitialized = TRUE;
        
        
        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;
        
        
        
        if( m_llStopTime != 0 && command != TIMER_START && command != TIMER_GETABSOLUTETIME)
            qwTime.QuadPart = m_llStopTime;
        else
            QueryPerformanceCounter( &qwTime );
        
        if( command == TIMER_GETELAPSEDTIME )
        {
            fElapsedTime = (double) ( qwTime.QuadPart - m_llLastElapsedTime ) / (double) m_llQPFTicksPerSec;
            m_llLastElapsedTime = qwTime.QuadPart;
            return (FLOAT) fElapsedTime;
        }
    
        
        if( command == TIMER_GETAPPTIME )
        {
            double fAppTime = (double) ( qwTime.QuadPart - m_llBaseTime ) / (double) m_llQPFTicksPerSec;
            return (FLOAT) fAppTime;
        }
    
        
        if( command == TIMER_RESET )
        {
            m_llBaseTime        = qwTime.QuadPart;
            m_llLastElapsedTime = qwTime.QuadPart;
            m_llStopTime        = 0;
            m_bTimerStopped     = FALSE;
            return 0.0f;
        }
    
        
        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;
        }
    
        
        if( command == TIMER_STOP )
        {
            if( !m_bTimerStopped )
            {
                m_llStopTime = qwTime.QuadPart;
                m_llLastElapsedTime = qwTime.QuadPart;
                m_bTimerStopped = TRUE;
            }
            return 0.0f;
        }
    
        
        if( command == TIMER_ADVANCE )
        {
            m_llStopTime += m_llQPFTicksPerSec/10;
            return 0.0f;
        }
        if( command == TIMER_GETABSOLUTETIME )
        {
            fTime = qwTime.QuadPart / (double) m_llQPFTicksPerSec;
            return (FLOAT) fTime;
        }
        return -1.0f; 
    }
    else
    {
        
        static double m_fLastElapsedTime  = 0.0;
        static double m_fBaseTime         = 0.0;
        static double m_fStopTime         = 0.0;
        double fTime;
        double fElapsedTime;
        
        
        
        if( m_fStopTime != 0.0 && command != TIMER_START && command != TIMER_GETABSOLUTETIME)
            fTime = m_fStopTime;
        else
            fTime = GETTIMESTAMP() * 0.001;
    
        
        if( command == TIMER_GETELAPSEDTIME )
        {   
            fElapsedTime = (double) (fTime - m_fLastElapsedTime);
            m_fLastElapsedTime = fTime;
            return (FLOAT) fElapsedTime;
        }
    
        
        if( command == TIMER_GETAPPTIME )
        {
            return (FLOAT) (fTime - m_fBaseTime);
        }
    
        
        if( command == TIMER_RESET )
        {
            m_fBaseTime         = fTime;
            m_fLastElapsedTime  = fTime;
            m_fStopTime         = 0;
            m_bTimerStopped     = FALSE;
            return 0.0f;
        }
    
        
        if( command == TIMER_START )
        {
            if( m_bTimerStopped )
                m_fBaseTime += fTime - m_fStopTime;
            m_fStopTime = 0.0f;
            m_fLastElapsedTime  = fTime;
            m_bTimerStopped = FALSE;
            return 0.0f;
        }
    
        
        if( command == TIMER_STOP )
        {
            if( !m_bTimerStopped )
            {
                m_fStopTime = fTime;
                m_fLastElapsedTime  = fTime;
                m_bTimerStopped = TRUE;
            }
            return 0.0f;
        }
    
        
        if( command == TIMER_ADVANCE )
        {
            m_fStopTime += 0.1f;
            return 0.0f;
        }
        if( command == TIMER_GETABSOLUTETIME )
        {
            return (FLOAT) fTime;
        }
        return -1.0f; 
    }
}
HRESULT DXUtil_ConvertAnsiStringToWideCch( WCHAR* wstrDestination, const CHAR* strSource, 
                                     int cchDestChar )
{
    if( wstrDestination==NULL || strSource==NULL || cchDestChar < 1 )
        return E_INVALIDARG;
    int nResult = MultiByteToWideChar( CP_ACP, 0, strSource, -1, 
                                       wstrDestination, cchDestChar );
    wstrDestination[cchDestChar-1] = 0;
    
    if( nResult == 0 )
        return E_FAIL;
    return S_OK;
}
HRESULT DXUtil_ConvertWideStringToAnsiCch( CHAR* strDestination, const WCHAR* wstrSource, 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩美女在线视频| 亚洲伊人色欲综合网| 欧美日韩一级二级| 成人黄色小视频| 狠狠色丁香久久婷婷综合_中 | 欧美激情一区在线| 精品国产一区二区三区忘忧草 | 国产丶欧美丶日本不卡视频| 免费看欧美美女黄的网站| 亚洲成av人片观看| 亚洲最新视频在线观看| 椎名由奈av一区二区三区| 中文字幕第一区二区| 国产色91在线| 国产亚洲污的网站| 久久久国产精品不卡| 精品久久人人做人人爰| 欧美亚洲动漫精品| 在线观看亚洲一区| 在线观看日韩毛片| 欧美亚一区二区| 欧洲精品视频在线观看| 欧美中文字幕亚洲一区二区va在线 | 午夜精品视频一区| 午夜私人影院久久久久| 亚洲二区在线观看| 亚洲bt欧美bt精品| 美女脱光内衣内裤视频久久影院| 亚洲欧美日韩在线播放| 亚洲欧美另类在线| 亚洲一区精品在线| 三级久久三级久久| 日本vs亚洲vs韩国一区三区二区 | 美国三级日本三级久久99 | 欧美性xxxxxx少妇| 欧美综合欧美视频| 在线播放日韩导航| 日韩免费一区二区| 久久久亚洲欧洲日产国码αv| 精品国产青草久久久久福利| 久久久精品综合| 国产精品久久777777| 亚洲免费观看高清| 午夜亚洲福利老司机| 久久黄色级2电影| 国产一区二区伦理| 国内成人精品2018免费看| 美腿丝袜亚洲三区| 丁香另类激情小说| 日本精品一区二区三区四区的功能| 91电影在线观看| 欧美va亚洲va香蕉在线| 欧美国产日本视频| 亚洲一区二区三区在线播放| 亚洲成人午夜电影| 激情文学综合插| av激情成人网| 欧美一区二区在线视频| 26uuu国产在线精品一区二区| 国产精品三级在线观看| 亚洲国产精品一区二区www在线| 日韩av高清在线观看| 精品一区中文字幕| 91论坛在线播放| 日韩午夜在线播放| 中文字幕制服丝袜成人av| 亚洲不卡一区二区三区| 国产毛片一区二区| 在线观看成人免费视频| 欧美日韩一区二区三区不卡| 久久免费午夜影院| 亚洲国产综合91精品麻豆| 韩国欧美国产一区| 在线区一区二视频| 久久伊人中文字幕| 亚洲国产日韩综合久久精品| 国产福利一区在线| 在线视频一区二区免费| 国产亚洲欧美日韩日本| 午夜欧美2019年伦理| 成人午夜碰碰视频| 日韩欧美高清dvd碟片| 一区二区高清在线| 国产高清不卡一区| 欧美日韩第一区日日骚| 亚洲日本va午夜在线影院| 国模冰冰炮一区二区| 色婷婷亚洲综合| 国产女主播视频一区二区| 免费在线观看视频一区| 91原创在线视频| 久久精品欧美日韩精品| 日韩av电影天堂| 色8久久精品久久久久久蜜| 欧美变态tickle挠乳网站| 亚洲欧洲日韩女同| 久久成人麻豆午夜电影| 欧美日韩中文字幕一区| 中文字幕亚洲综合久久菠萝蜜| 精品一区二区三区在线播放| 欧美日韩一区不卡| 欧美国产一区二区| 美腿丝袜一区二区三区| 欧美久久一二三四区| 亚洲黄色av一区| av一区二区三区黑人| 国产欧美日韩精品在线| 久久成人免费日本黄色| 欧美一区二区日韩| 亚洲国产精品一区二区www在线 | 欧美三级一区二区| 亚洲欧洲成人精品av97| 国产jizzjizz一区二区| 国产亚洲欧美中文| 麻豆91免费看| 欧美一区二区三区婷婷月色 | 成人午夜电影网站| 久久先锋影音av鲁色资源网| 午夜欧美在线一二页| 欧美日韩中文字幕一区| 亚洲在线视频网站| 精品久久五月天| 久久99国产精品免费| 精品久久久久久无| 国产一区在线精品| 国产偷国产偷精品高清尤物 | 一区二区三区不卡视频| 色综合中文字幕国产 | 日韩精品色哟哟| 欧美亚洲国产一区在线观看网站 | 国产精品看片你懂得| av在线这里只有精品| 一区二区三区美女| 欧美日韩免费观看一区二区三区| 人人爽香蕉精品| 国产拍欧美日韩视频二区 | 国产精品欧美极品| 色综合久久综合中文综合网| 午夜精品免费在线| 国产亚洲欧洲997久久综合| 色伊人久久综合中文字幕| 日本欧美在线看| 国产精品日日摸夜夜摸av| 91福利视频网站| 久久99精品一区二区三区三区| 中文一区在线播放 | 亚洲激情校园春色| 4438x成人网最大色成网站| 国产一区二区h| 夜夜爽夜夜爽精品视频| 欧美不卡123| 99精品视频在线观看免费| 亚洲午夜电影在线观看| 久久精品视频在线看| 欧美日韩中文国产| 成人在线视频一区| 日韩高清在线观看| 国产精品色哟哟| 日韩欧美高清一区| 91成人在线免费观看| 国产中文一区二区三区| 亚洲国产日韩在线一区模特| 国产日韩精品一区二区三区| 欧美电影在线免费观看| 成人app在线观看| 黑人精品欧美一区二区蜜桃| 亚洲一区二区三区视频在线| 久久精子c满五个校花| 色偷偷88欧美精品久久久 | 精品日韩在线观看| 色婷婷亚洲一区二区三区| 国内精品自线一区二区三区视频| 亚洲与欧洲av电影| 欧美极品xxx| 精品av久久707| 欧美一级免费观看| 色8久久精品久久久久久蜜| 国产精品1区二区.| 蜜桃视频免费观看一区| 亚洲国产美国国产综合一区二区| 中文一区在线播放| 久久婷婷一区二区三区| 欧美一区三区二区| 欧美视频一区在线| 色婷婷综合激情| 日韩一区二区三区免费看| 99久久精品久久久久久清纯| 国产一区 二区| 久久激五月天综合精品| 日本怡春院一区二区| 午夜激情一区二区三区| 一区二区三区日韩欧美精品| 最新久久zyz资源站| 中文字幕欧美激情| 久久久99久久| 久久精品夜夜夜夜久久| 2023国产精品自拍| 精品国产一区二区三区不卡 | 91精品久久久久久久91蜜桃| 欧美日韩精品欧美日韩精品|