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

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

?? dxutil.cpp

?? < VC++視頻音頻開發>> 這本書的源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
                                     int cchDestChar )
{
    if( strDestination==NULL || wstrSource==NULL || cchDestChar < 1 )
        return E_INVALIDARG;
    int nResult = WideCharToMultiByte( CP_ACP, 0, wstrSource, -1, strDestination, 
                                       cchDestChar*sizeof(CHAR), NULL, NULL );
    strDestination[cchDestChar-1] = 0;
    
    if( nResult == 0 )
        return E_FAIL;
    return S_OK;
}
HRESULT DXUtil_ConvertGenericStringToAnsiCch( CHAR* strDestination, const TCHAR* tstrSource, 
                                           int cchDestChar )
{
    if( strDestination==NULL || tstrSource==NULL || cchDestChar < 1 )
        return E_INVALIDARG;
#ifdef _UNICODE
    return DXUtil_ConvertWideStringToAnsiCch( strDestination, tstrSource, cchDestChar );
#else
    strncpy( strDestination, tstrSource, cchDestChar );
    strDestination[cchDestChar-1] = '\0';
    return S_OK;
#endif   
}
HRESULT DXUtil_ConvertGenericStringToWideCch( WCHAR* wstrDestination, const TCHAR* tstrSource, 
                                           int cchDestChar )
{
    if( wstrDestination==NULL || tstrSource==NULL || cchDestChar < 1 )
        return E_INVALIDARG;
#ifdef _UNICODE
    wcsncpy( wstrDestination, tstrSource, cchDestChar );
    wstrDestination[cchDestChar-1] = L'\0';
    return S_OK;
#else
    return DXUtil_ConvertAnsiStringToWideCch( wstrDestination, tstrSource, cchDestChar );
#endif    
}
HRESULT DXUtil_ConvertAnsiStringToGenericCch( TCHAR* tstrDestination, const CHAR* strSource, 
                                           int cchDestChar )
{
    if( tstrDestination==NULL || strSource==NULL || cchDestChar < 1 )
        return E_INVALIDARG;
        
#ifdef _UNICODE
    return DXUtil_ConvertAnsiStringToWideCch( tstrDestination, strSource, cchDestChar );
#else
    strncpy( tstrDestination, strSource, cchDestChar );
    tstrDestination[cchDestChar-1] = '\0';
    return S_OK;
#endif    
}
HRESULT DXUtil_ConvertWideStringToGenericCch( TCHAR* tstrDestination, const WCHAR* wstrSource, 
                                           int cchDestChar )
{
    if( tstrDestination==NULL || wstrSource==NULL || cchDestChar < 1 )
        return E_INVALIDARG;
#ifdef _UNICODE
    wcsncpy( tstrDestination, wstrSource, cchDestChar );
    tstrDestination[cchDestChar-1] = L'\0';    
    return S_OK;
#else
    return DXUtil_ConvertWideStringToAnsiCch( tstrDestination, wstrSource, cchDestChar );
#endif
}
VOID DXUtil_LaunchReadme( HWND hWnd, TCHAR* strLoc )
{
#ifdef UNDER_CE
    
    MessageBox( hWnd, TEXT("For operating instructions, please open the ")
                      TEXT("readme.txt file included with the project."),
                TEXT("DirectX SDK Sample"), MB_ICONWARNING | MB_OK );
    return;
#else 
    bool bSuccess = false;
    bool bFound = false;
    TCHAR strReadmePath[1024];
    TCHAR strExeName[MAX_PATH];
    TCHAR strExePath[MAX_PATH];
    TCHAR strSamplePath[MAX_PATH];
    TCHAR* strLastSlash = NULL;
    lstrcpy( strReadmePath, TEXT("") );
    lstrcpy( strExePath, TEXT("") );
    lstrcpy( strExeName, TEXT("") );
    lstrcpy( strSamplePath, TEXT("") );
    
    if( strLoc )
    {
        HKEY  hKey;
        LONG lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
                                    _T("Software\\Microsoft\\DirectX SDK"),
                                    0, KEY_READ, &hKey );
        if( ERROR_SUCCESS == lResult )
        {
            DWORD dwType;
            DWORD dwSize = MAX_PATH * sizeof(TCHAR);
            lResult = RegQueryValueEx( hKey, _T("DX9SDK Samples Path"), NULL,
                                      &dwType, (BYTE*)strSamplePath, &dwSize );
            strSamplePath[MAX_PATH-1] = 0; 
            
            if( ERROR_SUCCESS == lResult )
            {
                _sntprintf( strReadmePath, 1023, TEXT("%s\\C++\\%s\\readme.txt"), 
                            strSamplePath, strLoc );
                strReadmePath[1023] = 0;
                if( GetFileAttributes( strReadmePath ) != 0xFFFFFFFF )
                    bFound = TRUE;
            }
        }
        RegCloseKey( hKey );
    }
    
    GetModuleFileName( NULL, strExePath, MAX_PATH );
    strExePath[MAX_PATH-1]=0;
    strLastSlash = _tcsrchr( strExePath, TEXT('\\') );
    if( strLastSlash )
    {
        _tcsncpy( strExeName, &strLastSlash[1], MAX_PATH );
        strExeName[MAX_PATH-1]=0;
        
        *strLastSlash = 0;
        
        strLastSlash = _tcsrchr( strExeName, TEXT('.') );
        if( strLastSlash )
            *strLastSlash = 0;
    }
    if( !bFound )
    {
        
        _tcscpy( strReadmePath, strExePath );
        strLastSlash = _tcsrchr( strReadmePath, TEXT('\\') );
        if( strLastSlash )
            *strLastSlash = 0;
        lstrcat( strReadmePath, TEXT("\\") );
        lstrcat( strReadmePath, strExeName );
        lstrcat( strReadmePath, TEXT("\\readme.txt") );
        if( GetFileAttributes( strReadmePath ) != 0xFFFFFFFF )
            bFound = TRUE;
    }
    if( !bFound )
    {
        
        _tcscpy( strReadmePath, strExePath );
        lstrcat( strReadmePath, TEXT("\\readme.txt") );
        if( GetFileAttributes( strReadmePath ) != 0xFFFFFFFF )
            bFound = TRUE;
    }
    if( !bFound )
    {
        
        _tcscpy( strReadmePath, strExePath );
        strLastSlash = _tcsrchr( strReadmePath, TEXT('\\') );
        if( strLastSlash )
            *strLastSlash = 0;
        lstrcat( strReadmePath, TEXT("\\readme.txt") );
        if( GetFileAttributes( strReadmePath ) != 0xFFFFFFFF )
            bFound = TRUE;
    }
    if( !bFound )
    {
        
        _tcscpy( strReadmePath, strExePath );
        strLastSlash = _tcsrchr( strReadmePath, TEXT('\\') );
        if( strLastSlash )
            *strLastSlash = 0;
        strLastSlash = _tcsrchr( strReadmePath, TEXT('\\') );
        if( strLastSlash )
            *strLastSlash = 0;
        lstrcat( strReadmePath, TEXT("\\readme.txt") );
        if( GetFileAttributes( strReadmePath ) != 0xFFFFFFFF )
            bFound = TRUE;
    }
    if( bFound )
    {
        
        
        LPShellExecute pShellExecute = NULL;
        HINSTANCE hInstShell32 = LoadLibrary(TEXT("shell32.dll"));
        if (hInstShell32 != NULL)
        {
#ifdef UNICODE
            pShellExecute = (LPShellExecute)GetProcAddress(hInstShell32, _TWINCE("ShellExecuteW"));
#else
            pShellExecute = (LPShellExecute)GetProcAddress(hInstShell32, _TWINCE("ShellExecuteA"));
#endif
            if( pShellExecute != NULL )
            {
                if( pShellExecute( hWnd, TEXT("open"), strReadmePath, NULL, NULL, SW_SHOW ) > (HINSTANCE) 32 )
                    bSuccess = true;
            }
            FreeLibrary(hInstShell32);
        }
    }
    if( !bSuccess )
    {
        
        MessageBox( hWnd, TEXT("Could not find readme.txt"), 
                    TEXT("DirectX SDK Sample"), MB_ICONWARNING | MB_OK );
    }
#endif 
}
VOID DXUtil_Trace( TCHAR* strMsg, ... )
{
#if defined(DEBUG) | defined(_DEBUG)
    TCHAR strBuffer[512];
    
    va_list args;
    va_start(args, strMsg);
    _vsntprintf( strBuffer, 512, strMsg, args );
    va_end(args);
    OutputDebugString( strBuffer );
#else
    UNREFERENCED_PARAMETER(strMsg);
#endif
}
HRESULT DXUtil_ConvertStringToGUID( const TCHAR* strSrc, GUID* pGuidDest )
{
    UINT aiTmp[10];
    if( _stscanf( strSrc, TEXT("{%8X-%4X-%4X-%2X%2X-%2X%2X%2X%2X%2X%2X}"),
                    &pGuidDest->Data1, 
                    &aiTmp[0], &aiTmp[1], 
                    &aiTmp[2], &aiTmp[3],
                    &aiTmp[4], &aiTmp[5],
                    &aiTmp[6], &aiTmp[7],
                    &aiTmp[8], &aiTmp[9] ) != 11 )
    {
        ZeroMemory( pGuidDest, sizeof(GUID) );
        return E_FAIL;
    }
    else
    {
        pGuidDest->Data2       = (USHORT) aiTmp[0];
        pGuidDest->Data3       = (USHORT) aiTmp[1];
        pGuidDest->Data4[0]    = (BYTE) aiTmp[2];
        pGuidDest->Data4[1]    = (BYTE) aiTmp[3];
        pGuidDest->Data4[2]    = (BYTE) aiTmp[4];
        pGuidDest->Data4[3]    = (BYTE) aiTmp[5];
        pGuidDest->Data4[4]    = (BYTE) aiTmp[6];
        pGuidDest->Data4[5]    = (BYTE) aiTmp[7];
        pGuidDest->Data4[6]    = (BYTE) aiTmp[8];
        pGuidDest->Data4[7]    = (BYTE) aiTmp[9];
        return S_OK;
    }
}
HRESULT DXUtil_ConvertGUIDToStringCch( const GUID* pGuidSrc, TCHAR* strDest, int cchDestChar )
{
    int nResult = _sntprintf( strDest, cchDestChar, TEXT("{%0.8X-%0.4X-%0.4X-%0.2X%0.2X-%0.2X%0.2X%0.2X%0.2X%0.2X%0.2X}"),
               pGuidSrc->Data1, pGuidSrc->Data2, pGuidSrc->Data3,
               pGuidSrc->Data4[0], pGuidSrc->Data4[1],
               pGuidSrc->Data4[2], pGuidSrc->Data4[3],
               pGuidSrc->Data4[4], pGuidSrc->Data4[5],
               pGuidSrc->Data4[6], pGuidSrc->Data4[7] );
    if( nResult < 0 )
        return E_FAIL;
    return S_OK;
}
CArrayList::CArrayList( ArrayListType Type, UINT BytesPerEntry )
{
    if( Type == AL_REFERENCE )
        BytesPerEntry = sizeof(void*);
    m_ArrayListType = Type;
    m_pData = NULL;
    m_BytesPerEntry = BytesPerEntry;
    m_NumEntries = 0;
    m_NumEntriesAllocated = 0;
}
CArrayList::~CArrayList( void )
{
    if( m_pData != NULL )
        delete[] m_pData;
}
HRESULT CArrayList::Add( void* pEntry )
{
    if( m_BytesPerEntry == 0 )
        return E_FAIL;
    if( m_pData == NULL || m_NumEntries + 1 > m_NumEntriesAllocated )
    {
        void* pDataNew;
        UINT NumEntriesAllocatedNew;
        if( m_NumEntriesAllocated == 0 )
            NumEntriesAllocatedNew = 16;
        else
            NumEntriesAllocatedNew = m_NumEntriesAllocated * 2;
        pDataNew = new BYTE[NumEntriesAllocatedNew * m_BytesPerEntry];
        if( pDataNew == NULL )
            return E_OUTOFMEMORY;
        if( m_pData != NULL )
        {
            CopyMemory( pDataNew, m_pData, m_NumEntries * m_BytesPerEntry );
            delete[] m_pData;
        }
        m_pData = pDataNew;
        m_NumEntriesAllocated = NumEntriesAllocatedNew;
    }
    if( m_ArrayListType == AL_VALUE )
        CopyMemory( (BYTE*)m_pData + (m_NumEntries * m_BytesPerEntry), pEntry, m_BytesPerEntry );
    else
        *(((void**)m_pData) + m_NumEntries) = pEntry;
    m_NumEntries++;
    return S_OK;
}
void CArrayList::Remove( UINT Entry )
{
    
    m_NumEntries--;
    
    BYTE* pData = (BYTE*)m_pData + (Entry * m_BytesPerEntry);
    
    MoveMemory( pData, pData + m_BytesPerEntry, ( m_NumEntries - Entry ) * m_BytesPerEntry );
}
void* CArrayList::GetPtr( UINT Entry )
{
    if( m_ArrayListType == AL_VALUE )
        return (BYTE*)m_pData + (Entry * m_BytesPerEntry);
    else
        return *(((void**)m_pData) + Entry);
}
bool CArrayList::Contains( void* pEntryData )
{
    for( UINT iEntry = 0; iEntry < m_NumEntries; iEntry++ )
    {
        if( m_ArrayListType == AL_VALUE )
        {
            if( memcmp( GetPtr(iEntry), pEntryData, m_BytesPerEntry ) == 0 )
                return true;
        }
        else
        {
            if( GetPtr(iEntry) == pEntryData )
                return true;
        }
    }
    return false;
}
HRESULT DXUtil_ConvertAnsiStringToWideCb( WCHAR* wstrDestination, const CHAR* strSource, int cbDestChar )
{
    return DXUtil_ConvertAnsiStringToWideCch( wstrDestination, strSource, cbDestChar / sizeof(WCHAR) );
}
HRESULT DXUtil_ConvertWideStringToAnsiCb( CHAR* strDestination, const WCHAR* wstrSource, int cbDestChar )
{
    return DXUtil_ConvertWideStringToAnsiCch( strDestination, wstrSource, cbDestChar / sizeof(CHAR) );
}
HRESULT DXUtil_ConvertGenericStringToAnsiCb( CHAR* strDestination, const TCHAR* tstrSource, int cbDestChar )
{
    return DXUtil_ConvertGenericStringToAnsiCch( strDestination, tstrSource, cbDestChar / sizeof(CHAR) );
}
HRESULT DXUtil_ConvertGenericStringToWideCb( WCHAR* wstrDestination, const TCHAR* tstrSource, int cbDestChar )
{
    return DXUtil_ConvertGenericStringToWideCch( wstrDestination, tstrSource, cbDestChar / sizeof(WCHAR) );
}
HRESULT DXUtil_ConvertAnsiStringToGenericCb( TCHAR* tstrDestination, const CHAR* strSource, int cbDestChar )
{
    return DXUtil_ConvertAnsiStringToGenericCch( tstrDestination, strSource, cbDestChar / sizeof(TCHAR) );
}
HRESULT DXUtil_ConvertWideStringToGenericCb( TCHAR* tstrDestination, const WCHAR* wstrSource, int cbDestChar )
{
    return DXUtil_ConvertWideStringToGenericCch( tstrDestination, wstrSource, cbDestChar / sizeof(TCHAR) );
}
HRESULT DXUtil_ReadStringRegKeyCb( HKEY hKey, TCHAR* strRegName, TCHAR* strDest, DWORD cbDest, TCHAR* strDefault )
{
    return DXUtil_ReadStringRegKeyCch( hKey, strRegName, strDest, cbDest / sizeof(TCHAR), strDefault );
}
HRESULT DXUtil_ConvertGUIDToStringCb( const GUID* pGuidSrc, TCHAR* strDest, int cbDestChar )
{
    return DXUtil_ConvertGUIDToStringCch( pGuidSrc, strDest, cbDestChar / sizeof(TCHAR) );
}
#ifndef UNDER_CE
HRESULT DXUtil_GetDXSDKMediaPathCb( TCHAR* szDest, int cbDest )
{
    return DXUtil_GetDXSDKMediaPathCch( szDest, cbDest / sizeof(TCHAR) );
}
HRESULT DXUtil_FindMediaFileCb( TCHAR* szDestPath, int cbDest, TCHAR* strFilename )
{
    return DXUtil_FindMediaFileCch( szDestPath, cbDest / sizeof(TCHAR), strFilename );
}
#endif 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久婷婷国产综合精品青草 | 久久综合色之久久综合| 99视频精品在线| 国产成人av影院| 国产成人精品一区二区三区四区 | 日韩欧美在线网站| 日韩欧美国产午夜精品| 日韩欧美电影一区| 日韩视频一区二区三区| xvideos.蜜桃一区二区| 日本一区二区三区在线不卡| 中文字幕中文字幕在线一区| 一区二区三区欧美视频| 亚欧色一区w666天堂| 麻豆精品视频在线观看免费| 精品无码三级在线观看视频| 成人av小说网| 在线观看国产一区二区| 欧美日韩精品二区第二页| 日韩一区二区在线看| 久久久久久久久久电影| 亚洲免费视频中文字幕| 日本不卡一二三| 成人免费高清视频| 欧美揉bbbbb揉bbbbb| 日韩视频一区二区| 亚洲天堂网中文字| 男男成人高潮片免费网站| 国产成人精品网址| 欧美色综合久久| 久久精品亚洲国产奇米99| 亚洲精品免费电影| 国产最新精品免费| 在线免费观看视频一区| 欧美videos中文字幕| 亚洲三级在线免费| 国产在线播放一区三区四| 色综合中文字幕| 精品国产一区二区三区四区四| 欧美激情综合五月色丁香小说| 午夜精品福利一区二区三区蜜桃| 国产美女一区二区三区| 91国偷自产一区二区三区观看| 欧美一区二区三区免费| 亚洲三级在线观看| 国产一区二区三区免费播放| 欧美色网站导航| 中文字幕高清不卡| 国产在线精品一区二区三区不卡| 91国产视频在线观看| 久久精品一区二区三区四区| 一区二区成人在线| 成人激情动漫在线观看| 精品日韩一区二区三区免费视频| 亚洲国产精品麻豆| 99久久国产综合精品色伊| 精品国产91亚洲一区二区三区婷婷 | www.爱久久.com| 久久久久久久久久久久电影| 麻豆精品一区二区三区| 777奇米四色成人影色区| 亚洲综合男人的天堂| av在线不卡电影| 日本一区二区三区在线不卡| 激情久久五月天| 精品日韩成人av| 久久99久久久久久久久久久| 欧美美女激情18p| 五月婷婷综合网| 欧美日韩另类一区| 天堂午夜影视日韩欧美一区二区| 欧洲人成人精品| 亚洲一卡二卡三卡四卡| 欧美三区在线观看| 亚洲综合一区在线| 在线观看成人免费视频| 中文字幕亚洲在| 99国内精品久久| 亚洲色图欧美在线| 欧美亚洲精品一区| 午夜精品影院在线观看| 51精品秘密在线观看| 奇米色777欧美一区二区| 日韩午夜av一区| 国产黄人亚洲片| 亚洲视频网在线直播| 在线免费观看视频一区| 丝袜美腿亚洲一区| 欧美一区二区在线播放| 日本视频一区二区三区| 精品对白一区国产伦| 成人激情动漫在线观看| 亚洲欧美国产三级| 欧美日本韩国一区二区三区视频| 日韩av电影一区| 精品国免费一区二区三区| 成人午夜电影网站| 亚洲综合激情网| 精品欧美黑人一区二区三区| 成人激情图片网| 亚洲一线二线三线视频| 欧美成人一级视频| 99re这里只有精品首页| 日韩精品五月天| 久久久久久久久久久99999| 日本精品免费观看高清观看| 日本视频在线一区| 亚洲欧洲精品一区二区精品久久久| 欧美男同性恋视频网站| 国产成人亚洲精品青草天美| 亚洲综合久久av| 欧美国产国产综合| 欧美日韩国产乱码电影| 粉嫩绯色av一区二区在线观看| 亚洲综合视频在线| 日本一区二区三区电影| 3d动漫精品啪啪一区二区竹菊| 国产91精品一区二区| 日本不卡一二三区黄网| 1000部国产精品成人观看| 91精品国产91久久综合桃花| 91丨九色丨国产丨porny| 美日韩黄色大片| 亚洲小少妇裸体bbw| 日本一区二区三区电影| 日韩精品专区在线影院重磅| 日本高清免费不卡视频| 国产成人午夜精品5599| 另类调教123区| 亚洲第一综合色| 综合久久一区二区三区| 久久久99久久| 精品美女一区二区| 日韩一区二区三区在线视频| 色哟哟精品一区| aaa欧美日韩| 成人午夜免费电影| 国产成人精品aa毛片| 精品综合久久久久久8888| 午夜精品久久久久久久蜜桃app| 综合激情成人伊人| 中文字幕五月欧美| 亚洲国产精品传媒在线观看| 日韩欧美国产小视频| 91精品国产一区二区| 欧美美女黄视频| 欧美日韩精品一区二区天天拍小说| 一本久道久久综合中文字幕| 91免费看片在线观看| 91亚洲国产成人精品一区二三| 不卡av免费在线观看| 豆国产96在线|亚洲| 成人涩涩免费视频| aaa欧美日韩| 在线观看一区日韩| 欧美日韩你懂的| 欧美欧美欧美欧美首页| 91精品国产入口| 精品国产欧美一区二区| 久久亚洲综合色| 亚洲国产成人一区二区三区| 国产精品传媒视频| 亚洲乱码国产乱码精品精的特点| 国产精品久久精品日日| 尤物在线观看一区| 午夜日韩在线电影| 免费视频最近日韩| 六月丁香综合在线视频| 国产成人自拍在线| 91黄色小视频| 日韩欧美久久一区| 欧美极品另类videosde| 亚洲欧美激情视频在线观看一区二区三区| 亚洲免费资源在线播放| 日产欧产美韩系列久久99| 精品亚洲aⅴ乱码一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 成人天堂资源www在线| 91麻豆自制传媒国产之光| 欧美精品久久一区二区三区| 亚洲精品在线观看网站| 最新国产精品久久精品| 日韩国产精品久久| 国产东北露脸精品视频| 在线影视一区二区三区| 日韩欧美中文字幕公布| 亚洲图片激情小说| 美女一区二区在线观看| 99久久国产综合色|国产精品| 欧美理论在线播放| 日本一区二区三区四区 | 欧美r级在线观看| 中文字幕中文乱码欧美一区二区 | 国产精品一区二区久激情瑜伽| 成人18视频在线播放| 欧美一区二区三区成人| 国产精品视频你懂的| 麻豆国产欧美日韩综合精品二区| 91同城在线观看| 久久久久久久久久久久电影|