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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 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 );

//-----------------------------------------------------------------------------
// 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
//-----------------------------------------------------------------------------
VOID    DXUtil_Trace( TCHAR* strMsg, ... );
HRESULT _DbgOut( TCHAR*, DWORD, HRESULT, TCHAR* );

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

#if defined(DEBUG) | defined(_DEBUG)
    #define DEBUG_MSG(str)    _DbgOut( __FILE__, (DWORD)__LINE__, 0, str )
#else
    #define DEBUG_MSG(str)    (0L)
#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
{
private:
    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* 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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕不卡一区| 麻豆精品一区二区三区| 欧美日韩亚洲丝袜制服| 日韩国产在线观看| 精品国产网站在线观看| 国产精品一区免费视频| 国产精品久久三| 色婷婷久久99综合精品jk白丝| 一区二区三区中文在线观看| 欧美日韩一级片在线观看| 免费观看久久久4p| 国产日韩欧美在线一区| 91免费观看视频| 视频一区二区国产| 久久久久青草大香线综合精品| 成人午夜视频网站| 亚洲国产成人tv| 精品捆绑美女sm三区| 成人亚洲精品久久久久软件| 一区二区三区在线观看视频| 666欧美在线视频| 风间由美中文字幕在线看视频国产欧美 | 欧美成人vr18sexvr| 成人手机在线视频| 亚洲成人手机在线| 久久一区二区视频| 色婷婷久久久久swag精品 | 制服丝袜在线91| 国产黄人亚洲片| 亚洲一区二区在线播放相泽| 欧美刺激午夜性久久久久久久| 国产91精品一区二区麻豆网站| 一个色综合av| www久久精品| 色噜噜狠狠成人网p站| 久久不见久久见免费视频7| 亚洲人成电影网站色mp4| 日韩视频一区二区三区| 91在线无精精品入口| 久久精品国产在热久久| 亚洲日本欧美天堂| 精品嫩草影院久久| 欧美性感一区二区三区| 国产精品亚洲人在线观看| 亚洲国产一区视频| 国产精品污污网站在线观看| 欧美一区国产二区| 91丨porny丨国产入口| 久久69国产一区二区蜜臀| 亚洲美女在线一区| 国产亚洲va综合人人澡精品| 欧美精品在线视频| 成人黄色在线视频| 精一区二区三区| 亚洲一区二区精品3399| 亚洲国产精品成人久久综合一区| 欧美高清一级片在线| 99精品在线观看视频| 久久超碰97中文字幕| 亚洲成人免费影院| 国产精品色噜噜| 精品国产乱码久久久久久影片| 在线亚洲免费视频| 不卡视频一二三四| 国产精品正在播放| 日韩福利电影在线| 亚洲午夜一区二区| 专区另类欧美日韩| 中文字幕av一区 二区| 欧美成人猛片aaaaaaa| 欧美日韩国产一级| 色综合视频一区二区三区高清| 国产毛片精品视频| 毛片av一区二区| 亚洲成av人片观看| 悠悠色在线精品| 中文字幕在线不卡一区| 久久久久久免费网| 日韩精品一区二区在线| 欧美疯狂性受xxxxx喷水图片| 色呦呦国产精品| www.亚洲色图.com| 国产福利一区二区| 国产在线精品免费| 捆绑变态av一区二区三区| 亚洲.国产.中文慕字在线| 亚洲伦理在线精品| 最新国产の精品合集bt伙计| 国产欧美日韩中文久久| 日韩欧美中文字幕公布| 正在播放亚洲一区| 8v天堂国产在线一区二区| 欧美日韩中文国产| 欧美视频精品在线| 欧美日韩日日摸| 欧美日韩高清一区二区| 欧美色精品在线视频| 欧美日韩在线直播| 欧美日韩中文字幕一区二区| 欧美在线观看一区| 色菇凉天天综合网| 欧美最新大片在线看 | 337p日本欧洲亚洲大胆精品| 精品国产百合女同互慰| 精品精品欲导航| 精品国内二区三区| 久久综合99re88久久爱| 久久久久亚洲蜜桃| 国产精品色一区二区三区| 国产精品久久久久影院| 成人欧美一区二区三区白人| 亚洲人精品午夜| 一区二区三区色| 亚洲高清视频的网址| 午夜精品一区二区三区电影天堂| 香蕉影视欧美成人| 青青草原综合久久大伊人精品| 免费视频最近日韩| 激情久久五月天| 国产不卡高清在线观看视频| 成人国产精品免费| 91国产视频在线观看| 欧美日韩日本视频| 欧美不卡在线视频| 中文字幕+乱码+中文字幕一区| 亚洲欧洲国产日韩| 亚洲永久免费av| 日韩电影在线一区二区| 国产在线麻豆精品观看| 成人免费av在线| 欧美在线短视频| 欧美疯狂性受xxxxx喷水图片| 精品日韩一区二区三区免费视频| 久久美女高清视频| 亚洲欧美区自拍先锋| 亚洲成人在线观看视频| 久久超碰97中文字幕| 成人av资源网站| 欧美天堂一区二区三区| 欧美成人vr18sexvr| 国产精品情趣视频| 亚洲r级在线视频| 韩国av一区二区三区| jvid福利写真一区二区三区| 欧美日韩在线三级| 久久综合久久鬼色中文字| 国产精品初高中害羞小美女文| 亚洲国产成人av网| 国产精品中文有码| 在线视频你懂得一区| 欧美电视剧免费全集观看| 欧美国产精品一区二区三区| 亚洲图片欧美综合| 国内精品在线播放| 91久久线看在观草草青青 | 欧美精品xxxxbbbb| wwwwxxxxx欧美| 亚洲视频免费在线观看| 亚洲18影院在线观看| 国产成人av影院| 欧美日韩亚洲另类| 久久精品一区二区三区av| 亚洲影院在线观看| 国产精品亚洲人在线观看| 欧美亚洲国产怡红院影院| 久久中文娱乐网| 一区二区在线观看免费| 九九视频精品免费| 在线国产电影不卡| 久久天堂av综合合色蜜桃网| 一区二区三区成人在线视频| 国产伦精品一区二区三区视频青涩 | 欧美色图激情小说| 国产欧美精品一区二区三区四区| 亚洲一区二区三区精品在线| 国产在线视频精品一区| 欧美视频在线播放| 国产精品亲子乱子伦xxxx裸| 免费av网站大全久久| 99久久精品国产麻豆演员表| 日韩欧美国产综合| 一区二区三区四区视频精品免费| 国产一区福利在线| 欧美日韩性生活| 综合网在线视频| 狠狠色丁香九九婷婷综合五月| 欧美在线视频日韩| 国产精品福利在线播放| 久久99精品久久久| 欧美日韩免费在线视频| 国产精品电影院| 国产一区高清在线| 日韩一区二区三区电影在线观看| 日韩伦理av电影| 国产乱妇无码大片在线观看| 日韩一区二区精品葵司在线| 亚洲综合成人网| 91首页免费视频| 国产精品久久久久久久久久免费看| 久久精工是国产品牌吗|