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

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

?? didevimg.h

?? VC游戲編程基礎
?? H
字號:
//-----------------------------------------------------------------------------
// File: DIDevImg.h
//
// Desc: Header for CDIDevImage class, which encapsulates methods for drawing
//       device images, callout strings, and object highlights.
//
// This code is provided to aid developers in creating custom interfaces for
// device configuration. The provided interface is flexible enough for most
// situations, but is freely modifyable.
//
// The CDIDevImage class acts as the interface to the UI client, and the 
// exposed public methods should be called by the client to set the drawing
// options and perform renderings. The CDIDIObject class is used as a helper
// class, and the exposed public methods should not be called by client code.
//
// Copyright( c ) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------

#ifndef __DIDEVIMG_H__
#define __DIDEVIMG_H__

#ifndef DIRECTINPUT_VERSION
#define DIRECTINPUT_VERSION 0x0800
#endif

#include <windows.h>
#include <dinput.h>
#include <d3d9.h>
#include <tchar.h>

// macros
#ifndef SAFE_DELETE
#define SAFE_DELETE(p)  { if(p) { delete (p);     (p)=NULL; } }
#endif //SAFE_DELETE

#ifndef SAFE_DELETE_ARRAY
#define SAFE_DELETE_ARRAY(p)  { if(p) { delete[] (p);     (p)=NULL; } }
#endif //SAFE_DELETE_ARRAY

#ifndef SAFE_RELEASE
#define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } }
#endif //SAFE_RELEASE

// global constants
#define DIDICONST_MAX_IMAGE_WIDTH                 1024
#define DIDICONST_MAX_IMAGE_HEIGHT                1024
#define DIDICONST_CUSTOM_VIEW_WIDTH                400
#define DIDICONST_CUSTOM_VIEW_HEIGHT               300

// SetCalloutState flags
#define DIDICOS_HIGHLIGHTED                 0x00000001
#define DIDICOS_INVISIBLE                   0x00000002
#define DIDICOS_TOOLTIP                     0x00000004

// SetOutputImageSize flags
#define DIDISOIS_DEFAULT                    0x00000000
#define DIDISOIS_RESIZE                     0x00000001
#define DIDISOIS_MAINTAINASPECTUSINGWIDTH   0x00000002
#define DIDISOIS_MAINTAINASPECTUSINGHEIGHT  0x00000004

// Possible render targets
enum DIDIRENDERTARGET
{
    DIDIRT_SURFACE,
    DIDIRT_DC
};

// Custom HRESULTs
#define DI_IMAGENOTFOUND     \
    MAKE_HRESULT(0, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)

// Forward references
class CDIDIObject;
typedef TCHAR MAXSTRING[MAX_PATH];




//-----------------------------------------------------------------------------
// Name: CDIDevImage
// Desc: Handles device image drawing 
//-----------------------------------------------------------------------------
class CDIDevImage
{
public:
    // __________________________
    // Constructors / Destructors
    CDIDevImage();
    ~CDIDevImage();

    // ______________
    // Public Methods
    HRESULT Init( LPDIRECTINPUTDEVICE8 pDID );
    HRESULT SetCalloutState( DWORD dwObjId, DWORD dwCalloutState );
    HRESULT GetCalloutState( DWORD dwObjId, LPDWORD pdwCalloutState );
    HRESULT SetCalloutColors( DWORD dwObjId, COLORREF crColorNormal, COLORREF crColorHigh );
    HRESULT GetCalloutColors( DWORD dwObjId, LPCOLORREF pcrColorNormal, LPCOLORREF pcrColorHigh );
    HRESULT SetCalloutText( DWORD dwObjId, LPCTSTR strText );
    HRESULT GetCalloutText( DWORD dwObjId, LPTSTR strText, DWORD dwSize );
    HRESULT GetObjFromPoint( POINT Pt, LPDWORD pdwObjId );
    HRESULT SetActiveView( DWORD dwView );
    HRESULT GetActiveView( LPDWORD pdwView, LPDWORD pdwNumViews = NULL );
    HRESULT GetViewForObj( DWORD dwObjId, LPDWORD pdwView );
    HRESULT SetOutputImageSize( DWORD dwWidth, DWORD dwHeight, DWORD dwFlags );
    HRESULT SetFont( HFONT hFont );
    HRESULT SetColors( D3DCOLOR Background, COLORREF crCalloutNormal, COLORREF crCalloutHigh );
    HRESULT Render( LPDIRECT3DTEXTURE9 pTexture );
    HRESULT RenderToDC( HDC hDC );

    friend BOOL CALLBACK EnumDeviceObjectsCB( LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef );

protected:
    // _________________
    // Protected Methods
    VOID    CleanUp();
    HRESULT LoadImageInfo( LPDIRECTINPUTDEVICE8 pDIDevice );
    HRESULT RenderToTarget( LPVOID pvTarget, DIDIRENDERTARGET eTarget );
    HRESULT RenderCustomToTarget( LPVOID pvTarget, DIDIRENDERTARGET eTarget );
    HRESULT CreateCustomImageInfo( LPDIRECTINPUTDEVICE8 pDIDevice );
    HRESULT LoadImages();
    HRESULT BuildCustomUI();
    HRESULT CreateScaledSurfaceCopy( LPDIRECT3DSURFACE9 pSurfaceSrc, DWORD dwWidthSrc, DWORD dwHeightSrc, 
                                     FLOAT fxScale, FLOAT fyScale, LPDIRECT3DSURFACE9 *ppSurfaceDest );
    VOID    CreateFont();
    VOID    DestroyImages();
    HRESULT GetCustomUISize( SIZE* pSize );

    HRESULT AddObject( DWORD dwID );
    CDIDIObject* GetObject( DWORD dwID );


    // _________________
    // Protected Members
    BOOL                     m_bInitialized;    // Init method has been successfully run
    BOOL                     m_bCustomUI;       // ImageInfo not found. UI is built by program
    BOOL                     m_bInvalidUI;      // The custom UI needs to be recreated
    MAXSTRING*               m_atszImagePath;   // Array of MAXSTRING strings for background images
    HBITMAP*                 m_ahImages;        // Array of pointers to background bitmaps

    DWORD                    m_dwActiveView;    // Index of the currently active view
    DWORD                    m_dwNumViews;      // Total number of views for this devic3    
    
    D3DCOLOR                 m_BkColor;         // Background color for main device image
    HFONT                    m_hFont;           // Font to be used when drawing all text
    
    CDIDIObject**            m_apObject;        // Array of pointers to CDIDIObject data objects
    DWORD                    m_dwNumObjects;    // Total number of objects
    
    DWORD                    m_dwWidthPref;     // User-set preferred width
    DWORD                    m_dwHeightPref;    // User-set preffered height
    DWORD                    m_dwScaleMethod;   // Method to use when scaling to preferred size
                    

};




//-----------------------------------------------------------------------------
// Name: DIDICallout
// Desc: Encapsulates information a specific view callout
//-----------------------------------------------------------------------------
struct DIDICallout
{
    RECT  rcInit;
    RECT  rcScaled;
    POINT aptLineInit[5];
    POINT aptLineScaled[5];
    DWORD dwNumPoints;
    DWORD dwTextAlign;
};



//-----------------------------------------------------------------------------
// Name: DIDIOverlay
// Desc: Encapsulates information a specific view overlay
//-----------------------------------------------------------------------------
struct DIDIOverlay
{
    MAXSTRING strImagePath;
    RECT     rcInit;
    RECT     rcScaled;
    HBITMAP  hImage;
};




//-----------------------------------------------------------------------------
// Name: CDIDIObject
// Desc: Encapsulates information about the device object (axis, button, POV)
//-----------------------------------------------------------------------------
class CDIDIObject
{
public:
    // __________________________
    // Constructors / Destructors
    CDIDIObject( DWORD dwID, DWORD dwNumViews ); 
    ~CDIDIObject();


    // ______________
    // Public Methods
    VOID    SetOverlay( DWORD dwViewID, LPCTSTR tszImagePath, RECT rect );
    VOID    SetCallout( DWORD dwViewID, DWORD dwNumPoints, POINT *aptLine, RECT rect, DWORD dwTextAlign );
    VOID    SetCalloutState( DWORD dwCalloutState ) {m_dwState = dwCalloutState;}
    DWORD   GetCalloutState() {return m_dwState;}
    VOID    SetCalloutColors( COLORREF crColorNormal, COLORREF crColorHigh ) { m_crNormColor = crColorNormal; m_crHighColor = crColorHigh; }
    VOID    GetCalloutColors( LPCOLORREF pcrColorNormal, LPCOLORREF pcrColorHigh ) { if( pcrColorNormal ) *pcrColorNormal = m_crNormColor; if( pcrColorHigh ) *pcrColorHigh = m_crHighColor; }
    VOID    SetCalloutText( LPCTSTR strText );
    VOID    GetCalloutText( LPTSTR strText, DWORD dwSize );
    DWORD   GetID() { return m_dwID; }
    VOID    GetName( LPTSTR strName, DWORD dwSize ) { _tcsncpy( strName, m_strName, dwSize ); }
    VOID    SetName( LPCTSTR strName ) { _tcsncpy( m_strName, strName, MAX_PATH-4 ); }
    VOID    DestroyImages();
    HRESULT AllocateViews( DWORD dwNumViews );
    VOID    ScaleView( DWORD dwViewID, FLOAT fxScale, FLOAT fyScale );

    DIDICallout* GetCallout( DWORD dwViewID ) { return &m_aCallout[dwViewID]; }
    DIDIOverlay* GetOverlay( DWORD dwViewID ) { return &m_aOverlay[dwViewID]; }

private:
    // _______________
    // Private Members
    DWORD         m_dwID;
    MAXSTRING     m_strCallout;
    MAXSTRING     m_strName;

    COLORREF      m_crNormColor;
    COLORREF      m_crHighColor;

    DWORD         m_dwState;
    DWORD         m_dwNumViews;

    DIDICallout  *m_aCallout;
    DIDIOverlay  *m_aOverlay;

};

//-----------------------------------------------------------------------------
// Rendering constants and inline functions
//-----------------------------------------------------------------------------
const DWORD ALPHA_MASK = D3DCOLOR_ARGB(255, 0, 0, 0);
const DWORD RED_MASK   = D3DCOLOR_ARGB(0, 255, 0, 0);
const DWORD GREEN_MASK = D3DCOLOR_ARGB(0, 0, 255, 0);
const DWORD BLUE_MASK  = D3DCOLOR_ARGB(0, 0, 0, 255);


//-----------------------------------------------------------------------------
// Name: GetAlpha, GetRed, GetGreen, GetBlue
// Desc: Extracts the specified color component
//-----------------------------------------------------------------------------
inline BYTE GetAlpha( D3DCOLOR Color ) { return (BYTE)( Color >> 24 ); }
inline BYTE   GetRed( D3DCOLOR Color ) { return (BYTE)( Color >> 16 ); }
inline BYTE GetGreen( D3DCOLOR Color ) { return (BYTE)( Color >> 8  ); }
inline BYTE  GetBlue( D3DCOLOR Color ) { return (BYTE)( Color );       }




//-----------------------------------------------------------------------------
// Name: ColorFromCR
// Desc: Returns a D3DCOLOR from the given COLORREF
//-----------------------------------------------------------------------------
inline D3DCOLOR ColorFromCR( COLORREF cr ) 
{ 
    return GetRValue(cr) << 16 | GetGValue(cr) << 8 | GetBValue(cr); 
}




//-----------------------------------------------------------------------------
// Name: CRFromColor
// Desc: Returns a COLORREF from the given D3DCOLOR
//-----------------------------------------------------------------------------
inline COLORREF CRFromColor( D3DCOLOR color ) 
{ 
    return GetBlue(color) << 16 | GetGreen(color) << 8 | GetRed(color); 
}




//-----------------------------------------------------------------------------
// Name: ScaleRect
// Desc: Convenience inline function for scaling a RECT structure
//-----------------------------------------------------------------------------
inline VOID ScaleRect( const RECT* pRectSrc, RECT* pRectDest, FLOAT fxScale, FLOAT fyScale )
{
    pRectDest->top    = (LONG) ( fyScale * pRectSrc->top + 0.5 );
    pRectDest->bottom = (LONG) ( fyScale * pRectSrc->bottom + 0.5 );
    pRectDest->left   = (LONG) ( fxScale * pRectSrc->left + 0.5);
    pRectDest->right  = (LONG) ( fxScale * pRectSrc->right + 0.5);
}




//-----------------------------------------------------------------------------
// Name: ScalePoint
// Desc: Convenience inline function for scaling a POINT structure
//-----------------------------------------------------------------------------
inline VOID ScalePoint( const POINT* pPointSrc, POINT* pPointDest, FLOAT fxScale, FLOAT fyScale )
{
    pPointDest->x    = (LONG) ( fxScale * pPointSrc->x + 0.5 );
    pPointDest->y    = (LONG) ( fyScale * pPointSrc->y + 0.5 );
}




//-----------------------------------------------------------------------------
// Helper Functions
// These external functions don't require direct access to the private member
// variables, but are used at one or more points within the class methods.
//-----------------------------------------------------------------------------
HRESULT ApplyOverlay( HBITMAP hbmpDest, CONST RECT* prcDest, HBITMAP hbmpSrc );
HRESULT ApplyAlphaChannel( HBITMAP hbmpDest, HBITMAP hbmpAlpha, BOOL bOpaque );
HRESULT FillBackground( HBITMAP hbmpDest, D3DCOLOR Fill );
HRESULT CreateDIBSectionFromSurface( LPDIRECT3DSURFACE9 pSurface, HBITMAP* phBitmap, SIZE* pSize = NULL ); 
HRESULT RestoreRect( HBITMAP hbmpDest, CONST RECT* prcDest, LPBYTE pSrcPixels );
HRESULT DrawTooltip( HDC hdcRender, HDC hdcAlpha, LPCTSTR strTooltip, RECT* prcBitmap, 
                     RECT* prcTruncated, COLORREF crFore, COLORREF crBack, COLORREF crBorder );
IDirect3DSurface9* GetCloneSurface( int iWidth, int iHeight );

BOOL CALLBACK EnumDeviceObjectsCB( LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef );


#endif  //__DIDEVIMG_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费av在线| 国产电影一区二区三区| 国产视频不卡一区| 久久精品一区四区| 国产亚洲美州欧州综合国| 久久综合九色综合欧美就去吻| 欧美精品免费视频| 精品视频一区 二区 三区| 99久久99久久精品国产片果冻| 99精品久久99久久久久| 色狠狠综合天天综合综合| 欧美美女一区二区三区| 日韩一区二区不卡| 欧美专区亚洲专区| 日韩一区二区三区视频| 久久久www成人免费无遮挡大片 | 亚洲精品国久久99热| 亚洲欧美日韩精品久久久久| 亚洲一区二区影院| 麻豆传媒一区二区三区| 成人aaaa免费全部观看| 色噜噜狠狠成人网p站| 制服丝袜亚洲播放| 久久久亚洲综合| 亚洲蜜桃精久久久久久久| 欧美国产乱子伦| 日韩久久一区二区| 日本欧美久久久久免费播放网| 午夜a成v人精品| 高清不卡一区二区在线| 91蝌蚪porny| 日韩一区二区麻豆国产| 国产亚洲成av人在线观看导航| 亚洲男同1069视频| 蜜桃久久久久久| 成人激情av网| 欧美在线视频你懂得| 日韩精品中午字幕| 亚洲人妖av一区二区| 一区二区三区四区乱视频| 蜜臀久久久99精品久久久久久| 丰满白嫩尤物一区二区| 一本久久a久久精品亚洲| 欧美电视剧免费观看| 亚洲色欲色欲www| 久久国产夜色精品鲁鲁99| 91色在线porny| 久久亚洲免费视频| 石原莉奈一区二区三区在线观看 | 91小视频在线观看| 91精品国产欧美一区二区成人| 成人免费在线视频| 国产一区二区毛片| 欧美日韩1234| 一区二区三区在线免费视频| 久久国内精品自在自线400部| 欧美色图12p| 日韩毛片视频在线看| 国产自产v一区二区三区c| 欧美日韩精品福利| 亚洲自拍欧美精品| 在线观看欧美黄色| 亚洲视频在线观看三级| 国产成人午夜精品影院观看视频| 欧美成人艳星乳罩| 久久国产人妖系列| 欧美一区二区三区在线看| 精品欧美乱码久久久久久1区2区| 国产在线日韩欧美| 精品剧情在线观看| 捆绑紧缚一区二区三区视频| 日韩一区和二区| 免费在线欧美视频| 欧美精品日韩一区| 美女网站一区二区| 日韩欧美色综合| 久久er99精品| 久久久久久久久伊人| 国内成人免费视频| 久久精品夜色噜噜亚洲aⅴ| 国产精品一区二区在线观看不卡 | 国产精品久久久久久久久免费丝袜| 视频在线观看国产精品| 欧美日韩国产天堂| 日本亚洲欧美天堂免费| 欧美一区二区福利视频| 免费黄网站欧美| 久久影院视频免费| 国产精品中文字幕一区二区三区| 久久色成人在线| 国产成人自拍网| 亚洲日本在线天堂| 欧美日韩国产高清一区| 亚洲网友自拍偷拍| 日韩欧美中文一区二区| 国产乱码精品一区二区三区av| 国产精品网曝门| 91色在线porny| 日本美女一区二区三区| 久久久久久久久久久久久久久99 | 久久国产福利国产秒拍| 久久精品一区二区三区av| 99精品一区二区| 爽好多水快深点欧美视频| 另类综合日韩欧美亚洲| 色综合久久88色综合天天| 欧美色精品在线视频| 亚洲午夜久久久久久久久久久| a在线欧美一区| 日本亚洲免费观看| 久久久久久久网| 盗摄精品av一区二区三区| 亚洲精品水蜜桃| 51午夜精品国产| 国产老女人精品毛片久久| 亚洲四区在线观看| 精品黑人一区二区三区久久| 成人国产在线观看| 免费在线看一区| 亚洲天堂精品视频| 91精品国产高清一区二区三区| 国产白丝精品91爽爽久久| 亚洲大片一区二区三区| 国产色综合久久| 日韩一区二区三| 91国产免费观看| 国产99久久久国产精品潘金网站| 亚洲精品v日韩精品| 在线中文字幕一区二区| 国产iv一区二区三区| 毛片av一区二区三区| 亚洲午夜在线观看视频在线| 亚洲欧美一区二区在线观看| 久久综合九色综合久久久精品综合 | 自拍偷拍国产精品| 精品国产不卡一区二区三区| 欧美日韩一区中文字幕| 成人黄色在线网站| 国产成人一区在线| 青青草视频一区| 免费不卡在线视频| 欧美丰满美乳xxx高潮www| 99在线精品视频| 久久精品理论片| 亚洲午夜私人影院| 亚洲综合免费观看高清完整版在线 | 日产精品久久久久久久性色| 一区二区三区四区蜜桃| 国产精品剧情在线亚洲| 久久久久久久综合色一本| 久久看人人爽人人| 久久一留热品黄| 欧美精品一区二区在线播放| 日韩视频免费观看高清完整版 | 1区2区3区国产精品| 中文av字幕一区| 欧美国产精品一区二区三区| 日韩欧美国产一区在线观看| 欧美性色综合网| 91色综合久久久久婷婷| 99精品桃花视频在线观看| 国产精品一二三区在线| 成人综合婷婷国产精品久久蜜臀 | 色婷婷久久久久swag精品| 94色蜜桃网一区二区三区| 欧美视频在线一区| 3d动漫精品啪啪| 精品电影一区二区| 国产精品丝袜久久久久久app| 国产精品国产三级国产| 亚洲摸摸操操av| 天天综合网天天综合色| 蜜桃久久精品一区二区| 国产成都精品91一区二区三| 91麻豆福利精品推荐| 777色狠狠一区二区三区| 日韩一区二区三区在线| 亚洲国产精品高清| 亚洲色图.com| 日本vs亚洲vs韩国一区三区二区 | 久久午夜色播影院免费高清| 国产亚洲欧美日韩日本| 亚洲日穴在线视频| 毛片不卡一区二区| 91看片淫黄大片一级在线观看| 精品视频免费看| 久久婷婷色综合| 亚洲一二三区视频在线观看| 久久超碰97人人做人人爱| 成人免费黄色在线| 日韩一区二区免费在线观看| 国产精品久久久久影院老司| 亚洲成年人网站在线观看| 粉嫩一区二区三区在线看| 欧美精品粉嫩高潮一区二区| 国产日韩精品视频一区| 视频在线观看一区二区三区| av在线播放一区二区三区| 日韩欧美国产综合在线一区二区三区| 亚洲天堂a在线|