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

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

?? dxutil.cpp

?? < VC++視頻音頻開發>> 這本書的源碼
?? 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一区二区三区免费野_久草精品视频
国产真实乱对白精彩久久| 欧美午夜影院一区| 91国内精品野花午夜精品| 精品噜噜噜噜久久久久久久久试看| 午夜a成v人精品| 国产91丝袜在线播放| 欧美一级一区二区| 亚洲影院免费观看| 99久久久国产精品免费蜜臀| 久久久久久免费| 美女网站视频久久| 91精品国产乱码久久蜜臀| 亚洲欧美aⅴ...| 成人18视频日本| 欧美激情一区不卡| 国产乱人伦偷精品视频免下载| 91超碰这里只有精品国产| 亚洲综合区在线| 色婷婷av一区二区三区大白胸| 国产精品日韩成人| 国产一区二区三区| 久久综合九色综合97婷婷女人 | 91久久香蕉国产日韩欧美9色| 亚洲精品在线三区| 麻豆精品一区二区| 91麻豆精品国产自产在线| 性欧美疯狂xxxxbbbb| 欧美三区在线观看| 五月综合激情网| 51精品久久久久久久蜜臀| 日日夜夜精品视频天天综合网| 色婷婷综合久久久| 亚洲影视在线播放| 欧美酷刑日本凌虐凌虐| 丝袜亚洲另类丝袜在线| 欧美一区二区黄色| 久久不见久久见中文字幕免费| 精品国产污污免费网站入口 | 日韩免费福利电影在线观看| 青青青爽久久午夜综合久久午夜| 欧美一级爆毛片| 国产一区二区美女诱惑| 久久九九99视频| 99久久久久久| 午夜激情综合网| 精品久久久久久久久久久久久久久 | 午夜亚洲福利老司机| 欧美日韩国产高清一区二区| 日韩精品一二三| wwwwww.欧美系列| 97se狠狠狠综合亚洲狠狠| 一区二区三区在线影院| 欧美午夜电影网| 狠狠色狠狠色综合| 中文字幕高清不卡| 欧美伦理影视网| 国产盗摄一区二区| 一区二区三区国产豹纹内裤在线| 在线成人av网站| 床上的激情91.| 婷婷开心激情综合| 久久久99精品免费观看不卡| 91蜜桃免费观看视频| 亚洲成人av免费| 久久综合久色欧美综合狠狠| 色94色欧美sute亚洲线路一久 | 日本道色综合久久| 精品一区二区在线看| 中文字幕在线一区免费| 欧美日韩一区二区在线观看 | 亚洲不卡av一区二区三区| 久久影院电视剧免费观看| 91原创在线视频| 欧美日韩情趣电影| 激情综合色播五月| 亚洲一级二级在线| 欧美极品少妇xxxxⅹ高跟鞋| 欧美老女人第四色| 成人国产免费视频| 美女精品一区二区| 一区二区三区中文字幕精品精品 | 久88久久88久久久| 亚洲精品高清在线观看| 久久久电影一区二区三区| 欧美二区在线观看| 在线亚洲一区观看| 成人免费电影视频| 狠狠狠色丁香婷婷综合激情| 午夜私人影院久久久久| 国产精品美女一区二区三区 | 中文字幕视频一区| 亚洲精品一区二区三区福利 | 色婷婷一区二区| 国产98色在线|日韩| 免费成人在线观看| 一区二区高清在线| 亚洲色图欧美偷拍| 国产精品福利影院| 国产日韩在线不卡| 久久久综合激的五月天| 日韩欧美视频在线| 日韩丝袜情趣美女图片| 555夜色666亚洲国产免| 欧美伊人精品成人久久综合97| 91丨porny丨中文| 成人不卡免费av| 成人免费视频视频在线观看免费| 麻豆精品蜜桃视频网站| 美女mm1313爽爽久久久蜜臀| 日本午夜精品视频在线观看 | 国产精品一品二品| 国产一区91精品张津瑜| 韩国av一区二区三区在线观看| 婷婷综合五月天| 日韩和欧美的一区| 久久91精品久久久久久秒播| 欧美aa在线视频| 狠狠色丁香九九婷婷综合五月| 久久精品免费观看| 国产精品69毛片高清亚洲| 国产一区91精品张津瑜| 日韩一区二区三区在线视频| 欧美一区二区精美| 精品成人免费观看| 久久精品欧美一区二区三区不卡| 亚洲国产高清在线观看视频| 国产精品国产三级国产普通话99 | 美女视频黄a大片欧美| 麻豆精品国产传媒mv男同| 精品一区二区三区在线观看国产| 精品一二三四在线| 不卡的av在线| 欧美久久一二三四区| 日韩一级大片在线| 国产欧美一区在线| 一区二区三区不卡视频| 日本不卡在线视频| 国产精品伊人色| 99久久精品99国产精品| 欧美丰满高潮xxxx喷水动漫| 久久久噜噜噜久噜久久综合| 国产精品素人视频| 亚洲午夜电影在线观看| 久久国产免费看| 成人ar影院免费观看视频| 欧美日韩美少妇| 26uuu成人网一区二区三区| 国产精品乱码妇女bbbb| 成人国产免费视频| 欧美视频在线一区二区三区 | 国产精品情趣视频| 亚洲国产精品久久不卡毛片 | 亚洲gay无套男同| 国产专区欧美精品| 欧美色窝79yyyycom| 久久综合久色欧美综合狠狠| 一区二区成人在线视频| 国产美女精品在线| 欧美日本乱大交xxxxx| 欧美国产乱子伦 | 一二三区精品视频| 国产一区二区成人久久免费影院 | 欧美a级理论片| 色屁屁一区二区| 欧美激情综合网| 美女视频网站久久| 欧美日韩中文另类| 国产精品久久毛片| 国精产品一区一区三区mba桃花| 欧美综合一区二区| 国产精品日韩成人| 国产麻豆欧美日韩一区| 欧美美女网站色| 国产九色精品成人porny| 在线成人免费观看| 一区二区久久久| 91美女蜜桃在线| 亚洲视频一区二区在线| 成人午夜电影网站| 国产欧美精品一区aⅴ影院| 黑人精品欧美一区二区蜜桃| 91麻豆精品国产91久久久资源速度 | 成人av影院在线| 精品电影一区二区三区| 麻豆精品在线播放| 国产精品电影院| 成人免费视频免费观看| 久久久久成人黄色影片| 韩国v欧美v亚洲v日本v| 精品国产免费一区二区三区四区 | 欧美成人精品高清在线播放| 水蜜桃久久夜色精品一区的特点| 欧美在线看片a免费观看| 亚洲精品乱码久久久久久久久| av在线不卡免费看| 日韩毛片视频在线看| 99久久国产综合精品色伊| 亚洲三级电影全部在线观看高清| 99久久婷婷国产精品综合| 日韩一区中文字幕|