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

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

?? dxutil.h

?? Direct 9.0 游戲編程 包括PDF書籍和源代碼
?? H
字號:
//-----------------------------------------------------------------------------
// File: DXUtil.h
//
// Desc: Helper functions and typing shortcuts for DirectX programming.
//
// Copyright (c) 1997-2001 Microsoft Corporation. All rights reserved
//-----------------------------------------------------------------------------
#ifndef DXUTIL_H
#define DXUTIL_H


//-----------------------------------------------------------------------------
// Miscellaneous helper functions
//-----------------------------------------------------------------------------
#define SAFE_DELETE(p)       { if(p) { delete (p);     (p)=NULL; } }
#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p);   (p)=NULL; } }
#define SAFE_RELEASE(p)      { if(p) { (p)->Release(); (p)=NULL; } }


#ifndef UNDER_CE
//-----------------------------------------------------------------------------
// Name: DXUtil_GetDXSDKMediaPath() and DXUtil_FindMediaFile() 
// Desc: Returns the DirectX SDK path, as stored in the system registry
//       during the SDK install.
//-----------------------------------------------------------------------------
HRESULT DXUtil_GetDXSDKMediaPathCch( TCHAR* strDest, int cchDest );
HRESULT DXUtil_GetDXSDKMediaPathCb( TCHAR* szDest, int cbDest );
HRESULT DXUtil_FindMediaFileCch( TCHAR* strDestPath, int cchDest, TCHAR* strFilename );
HRESULT DXUtil_FindMediaFileCb( TCHAR* szDestPath, int cbDest, TCHAR* strFilename );
#endif // !UNDER_CE


//-----------------------------------------------------------------------------
// Name: DXUtil_Read*RegKey() and DXUtil_Write*RegKey()
// Desc: Helper functions to read/write a string registry key 
//-----------------------------------------------------------------------------
HRESULT DXUtil_WriteStringRegKey( HKEY hKey, TCHAR* strRegName, TCHAR* strValue );
HRESULT DXUtil_WriteIntRegKey( HKEY hKey, TCHAR* strRegName, DWORD dwValue );
HRESULT DXUtil_WriteGuidRegKey( HKEY hKey, TCHAR* strRegName, GUID guidValue );
HRESULT DXUtil_WriteBoolRegKey( HKEY hKey, TCHAR* strRegName, BOOL bValue );

HRESULT DXUtil_ReadStringRegKeyCch( HKEY hKey, TCHAR* strRegName, TCHAR* strDest, DWORD cchDest, TCHAR* strDefault );
HRESULT DXUtil_ReadStringRegKeyCb( HKEY hKey, TCHAR* strRegName, TCHAR* strDest, DWORD cbDest, TCHAR* strDefault );
HRESULT DXUtil_ReadIntRegKey( HKEY hKey, TCHAR* strRegName, DWORD* pdwValue, DWORD dwDefault );
HRESULT DXUtil_ReadGuidRegKey( HKEY hKey, TCHAR* strRegName, GUID* pGuidValue, GUID& guidDefault );
HRESULT DXUtil_ReadBoolRegKey( HKEY hKey, TCHAR* strRegName, BOOL* pbValue, BOOL bDefault );


//-----------------------------------------------------------------------------
// 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
//-----------------------------------------------------------------------------
enum TIMER_COMMAND { TIMER_RESET, TIMER_START, TIMER_STOP, TIMER_ADVANCE,
                     TIMER_GETABSOLUTETIME, TIMER_GETAPPTIME, TIMER_GETELAPSEDTIME };
FLOAT __stdcall DXUtil_Timer( TIMER_COMMAND command );


//-----------------------------------------------------------------------------
// UNICODE support for converting between CHAR, TCHAR, and WCHAR strings
//-----------------------------------------------------------------------------
HRESULT DXUtil_ConvertAnsiStringToWideCch( WCHAR* wstrDestination, const CHAR* strSource, int cchDestChar );
HRESULT DXUtil_ConvertWideStringToAnsiCch( CHAR* strDestination, const WCHAR* wstrSource, int cchDestChar );
HRESULT DXUtil_ConvertGenericStringToAnsiCch( CHAR* strDestination, const TCHAR* tstrSource, int cchDestChar );
HRESULT DXUtil_ConvertGenericStringToWideCch( WCHAR* wstrDestination, const TCHAR* tstrSource, int cchDestChar );
HRESULT DXUtil_ConvertAnsiStringToGenericCch( TCHAR* tstrDestination, const CHAR* strSource, int cchDestChar );
HRESULT DXUtil_ConvertWideStringToGenericCch( TCHAR* tstrDestination, const WCHAR* wstrSource, int cchDestChar );
HRESULT DXUtil_ConvertAnsiStringToWideCb( WCHAR* wstrDestination, const CHAR* strSource, int cbDestChar );
HRESULT DXUtil_ConvertWideStringToAnsiCb( CHAR* strDestination, const WCHAR* wstrSource, int cbDestChar );
HRESULT DXUtil_ConvertGenericStringToAnsiCb( CHAR* strDestination, const TCHAR* tstrSource, int cbDestChar );
HRESULT DXUtil_ConvertGenericStringToWideCb( WCHAR* wstrDestination, const TCHAR* tstrSource, int cbDestChar );
HRESULT DXUtil_ConvertAnsiStringToGenericCb( TCHAR* tstrDestination, const CHAR* strSource, int cbDestChar );
HRESULT DXUtil_ConvertWideStringToGenericCb( TCHAR* tstrDestination, const WCHAR* wstrSource, int cbDestChar );


//-----------------------------------------------------------------------------
// Readme functions
//-----------------------------------------------------------------------------
VOID DXUtil_LaunchReadme( HWND hWnd, TCHAR* strLoc = NULL );

//-----------------------------------------------------------------------------
// GUID to String converting 
//-----------------------------------------------------------------------------
HRESULT DXUtil_ConvertGUIDToStringCch( const GUID* pGuidSrc, TCHAR* strDest, int cchDestChar );
HRESULT DXUtil_ConvertGUIDToStringCb( const GUID* pGuidSrc, TCHAR* strDest, int cbDestChar );
HRESULT DXUtil_ConvertStringToGUID( const TCHAR* strIn, GUID* pGuidOut );


//-----------------------------------------------------------------------------
// Debug printing support
// See dxerr9.h for more debug printing support
//-----------------------------------------------------------------------------
VOID    DXUtil_Trace( TCHAR* strMsg, ... );

#if defined(DEBUG) | defined(_DEBUG)
    #define DXTRACE           DXUtil_Trace
#else
    #define DXTRACE           sizeof
#endif


//-----------------------------------------------------------------------------
// Name: ArrayListType
// Desc: Indicates how data should be stored in a CArrayList
//-----------------------------------------------------------------------------
enum ArrayListType
{
    AL_VALUE,       // entry data is copied into the list
    AL_REFERENCE,   // entry pointers are copied into the list
};


//-----------------------------------------------------------------------------
// Name: CArrayList
// Desc: A growable array
//-----------------------------------------------------------------------------
class CArrayList
{
protected:
    ArrayListType m_ArrayListType;
    void* m_pData;
    UINT m_BytesPerEntry;
    UINT m_NumEntries;
    UINT m_NumEntriesAllocated;

public:
    CArrayList( ArrayListType Type, UINT BytesPerEntry = 0 );
    ~CArrayList( void );
    HRESULT Add( void* pEntry );
    void Remove( UINT Entry );
    void* GetPtr( UINT Entry );
    UINT Count( void ) { return m_NumEntries; }
    bool Contains( void* pEntryData );
    void Clear( void ) { m_NumEntries = 0; }
};

//-----------------------------------------------------------------------------
// WinCE build support
//-----------------------------------------------------------------------------

#ifdef UNDER_CE

#define CheckDlgButton(hdialog, id, state) ::SendMessage(::GetDlgItem(hdialog, id), BM_SETCHECK, state, 0)
#define IsDlgButtonChecked(hdialog, id) ::SendMessage(::GetDlgItem(hdialog, id), BM_GETCHECK, 0L, 0L)
#define GETTIMESTAMP GetTickCount
#define _TWINCE(x) _T(x)

__inline int GetScrollPos(HWND hWnd, int nBar)
{
	SCROLLINFO si;
	memset(&si, 0, sizeof(si));
	si.cbSize = sizeof(si);
	si.fMask = SIF_POS;
	if (!GetScrollInfo(hWnd, nBar, &si))
	{
		return 0;
	}
	else
	{
		return si.nPos;
	}
}

#else // !UNDER_CE

#define GETTIMESTAMP timeGetTime
#define _TWINCE(x) x

#endif // UNDER_CE


#endif // DXUTIL_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩国产在线观看| 久久激情五月激情| 美女精品一区二区| 波多野洁衣一区| 欧美一级黄色片| 一区二区三区免费在线观看| 美女在线一区二区| 色94色欧美sute亚洲线路一久| 精品国产一区二区三区不卡| 亚洲午夜av在线| 91蜜桃传媒精品久久久一区二区| 久久夜色精品国产噜噜av| 亚洲国产日产av| aaa国产一区| 国产精品久久久久久久裸模 | 亚洲日本青草视频在线怡红院| 日本欧美大码aⅴ在线播放| 色综合咪咪久久| 成人欧美一区二区三区小说 | av一区二区三区| 精品福利在线导航| 奇米精品一区二区三区在线观看| 在线亚洲+欧美+日本专区| 国产日本欧美一区二区| 久久国产精品第一页| 欧美一区二区三区日韩| 香蕉影视欧美成人| 欧美视频一区二区三区在线观看 | 国产精品少妇自拍| 国产成人aaa| 国产午夜精品久久久久久久| 首页综合国产亚洲丝袜| 欧美乱妇20p| 日本vs亚洲vs韩国一区三区二区 | 麻豆精品国产91久久久久久| 欧美巨大另类极品videosbest | 亚洲人成在线播放网站岛国| 91日韩一区二区三区| 亚洲欧洲另类国产综合| 一本到一区二区三区| 一区二区三区日韩欧美| 欧美日韩综合一区| 五月综合激情日本mⅴ| 欧美一区二区精美| 国产成人av福利| 亚洲欧美怡红院| 欧美日韩在线精品一区二区三区激情| 亚洲一区二区五区| 欧美日韩国产电影| 精品亚洲免费视频| 国产女同性恋一区二区| 91在线播放网址| 视频在线观看一区二区三区| 91精品国产一区二区三区香蕉 | 男女性色大片免费观看一区二区| 日韩午夜精品电影| 国产精品1区二区.| 亚洲日本在线视频观看| 欧美一区二区三区在线看| 狠狠色丁香婷婷综合久久片| 日本一区二区在线不卡| 日本韩国视频一区二区| 裸体在线国模精品偷拍| 国产精品久久久久久久久动漫 | 亚洲精品日产精品乱码不卡| 91精品国产乱| 成人免费毛片app| 亚洲bdsm女犯bdsm网站| 久久久午夜精品| 欧美日韩一区二区三区四区五区 | 国产精品午夜电影| 欧美精品乱码久久久久久| 理论片日本一区| 亚洲视频综合在线| 日韩一级在线观看| 91蜜桃视频在线| 国产在线一区观看| 亚洲123区在线观看| 国产日韩欧美高清在线| 欧美日本一区二区在线观看| 国产a级毛片一区| 日韩电影在线观看一区| 一区精品在线播放| 国产日韩欧美一区二区三区综合| 欧美日韩国产不卡| 91首页免费视频| 国产裸体歌舞团一区二区| 五月激情六月综合| 最新日韩在线视频| 26uuu色噜噜精品一区| 欧美日韩一区二区电影| 暴力调教一区二区三区| 国产一区 二区| 免费人成精品欧美精品| 亚洲一区二区三区自拍| 中文字幕亚洲综合久久菠萝蜜| 欧美电影免费观看高清完整版在| 欧洲一区在线电影| 91丝袜呻吟高潮美腿白嫩在线观看| 国产精品一级片| 国产一区在线不卡| 久久99国产精品麻豆| 奇米精品一区二区三区在线观看 | 亚洲综合免费观看高清在线观看| 亚洲国产成人一区二区三区| wwwwww.欧美系列| 欧美成人一区二区| 精品乱码亚洲一区二区不卡| 欧美一级二级在线观看| 欧美一级夜夜爽| 欧美一级免费观看| 538在线一区二区精品国产| 欧美三级午夜理伦三级中视频| 欧美性受极品xxxx喷水| 91丨porny丨蝌蚪视频| 一本大道久久a久久综合| 一本大道综合伊人精品热热| 色综合天天综合网天天狠天天| 99国产精品99久久久久久| 不卡欧美aaaaa| 91色porny| 欧美久久一二三四区| 日韩一区二区三区在线观看| 日韩视频一区二区三区在线播放| 日韩一区二区三区四区| 久久久精品国产99久久精品芒果| 国产精品久久一级| 亚洲精品欧美激情| 青青草国产精品亚洲专区无| 久久99久久精品欧美| 狠狠网亚洲精品| 91玉足脚交白嫩脚丫在线播放| 欧日韩精品视频| 欧美一区二区三区成人| 久久久国产综合精品女国产盗摄| 国产精品二三区| 性做久久久久久免费观看| 日韩精品电影在线| 免费成人小视频| 国产电影一区在线| 91亚洲精品久久久蜜桃| 欧美色偷偷大香| 欧美一区二区三区喷汁尤物| 欧美激情中文不卡| 亚洲精品免费播放| 亚洲国产日产av| 国内精品久久久久影院薰衣草| 国产成人亚洲综合a∨婷婷| 成人av综合一区| 欧美午夜一区二区三区| 国产亚洲短视频| 一区二区三区日本| 日本不卡一区二区| 国产激情精品久久久第一区二区 | 久久这里只有精品6| 亚洲欧美一区二区不卡| 日韩精品亚洲一区二区三区免费| 精品在线观看视频| av一区二区三区黑人| 欧美巨大另类极品videosbest | 免费日韩伦理电影| gogogo免费视频观看亚洲一| 欧美日韩视频在线第一区| 亚洲精品一区二区三区精华液| 久久久久久综合| 天堂蜜桃91精品| 成人午夜av电影| 日韩免费视频线观看| 国产精品系列在线| 黄色成人免费在线| 欧美综合在线视频| 国产亚洲欧美日韩日本| 午夜影视日本亚洲欧洲精品| 国产精品99精品久久免费| 欧美亚洲一区三区| 精品国产伦一区二区三区观看方式| 亚洲国产精品久久一线不卡| 国产精品一区二区男女羞羞无遮挡| 懂色av一区二区三区免费看| 51精品国自产在线| 亚洲欧美视频一区| 欧美日韩在线播放| 国产人久久人人人人爽| 久久国产日韩欧美精品| 99久久国产免费看| 中文字幕一区二区视频| 免费观看91视频大全| 成人aa视频在线观看| 欧美大片免费久久精品三p| 亚洲第一成人在线| 国产一区二区在线免费观看| 日韩精品在线看片z| 偷窥国产亚洲免费视频 | 亚洲高清免费视频| 色婷婷国产精品久久包臀| 久久久久久99久久久精品网站| 丝袜国产日韩另类美女| 在线观看国产精品网站| 亚洲h精品动漫在线观看| 91国偷自产一区二区使用方法|