WHDXGraphic.h
上传用户:cydong117
上传日期:2009-11-10
资源大小:638k
文件大小:13k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. #ifndef _WINDHORN_DXGRAPHIC
  2. #define _WINDHORN_DXGRAPHIC
  3. /******************************************************************************************************************
  4. CWHDXGraphicWindow Class Declaration
  5. *******************************************************************************************************************/
  6. typedef struct tagDXG_DISPLAYINFO 
  7. {
  8. WORD wWidth;
  9. WORD wHeight;
  10. WORD wBPP;
  11. }DXG_DISPLAYINFO, *LPDXG_DISPLAYINFO;
  12. typedef struct DXG_ENUM_DEVICEINFO
  13. {
  14.     // 3D 叼官捞胶 沥焊.
  15.     TCHAR szDeviceDesc[256];
  16.     GUID* pDeviceGUID;
  17.     D3DDEVICEDESC7 ddDeviceDesc;
  18.     BOOL f3DHardware;
  19.     // 靛肺快 靛扼捞滚 沥焊.
  20. TCHAR szDriverDesc[256];
  21.     GUID* pDriverGUID;
  22.     DDCAPS ddDriverCaps;
  23.     DDCAPS ddHELCaps;
  24.     GUID            guidDevice;
  25.     GUID            guidDriver;
  26.     DDSURFACEDESC2* pddsdModes;
  27.     DWORD           dwNumModes;
  28. }DXG_ENUM_DEVICEINFO, *LPDXG_ENUM_DEVICEINFO;
  29. typedef struct tagDXG_MASKINFO
  30. {
  31. BYTE bRCnt;
  32. BYTE bGCnt;
  33. BYTE bBCnt;
  34. BYTE bRShift;
  35. BYTE bGShift;
  36. BYTE bBShift;
  37. DWORD dwRMask;
  38. DWORD dwGMask;
  39. DWORD dwBMask;
  40. }DXG_MASKINFO, *LPDXG_MASKINFO;
  41. class CWHDXGraphicWindow : public CWHWindow
  42. {
  43. //1: Constuctor/Destructor
  44. public:
  45. CWHDXGraphicWindow(WORD wWidth = _SCREEN_WIDTH, WORD wHeight = _SCREEN_HEIGHT, WORD wBpp = _SCREEN_BPP);
  46. ~CWHDXGraphicWindow();
  47. //2: Variables
  48. protected:
  49. LPDIRECT3D7 m_pD3D;
  50.     LPDIRECTDRAW7 m_pDD;
  51. LPDIRECT3DDEVICE7 m_pd3dDevice;
  52.     LPDIRECTDRAWSURFACE7 m_pddsFrontBuffer;
  53.     LPDIRECTDRAWSURFACE7 m_pddsBackBuffer;
  54. LPDIRECTDRAWSURFACE7 m_pddsZBuffer;
  55. LPDIRECTDRAWCLIPPER m_lpcClipper;
  56. ///////<---------------------------------------------------------------------------------------------------------------------------
  57. HFONT m_hDefGameFont;
  58. ///////<---------------------------------------------------------------------------------------------------------------------------
  59. BYTE m_bScreenModeFlag;
  60.     BYTE m_bDeviceModeFlag;
  61. public:
  62. DWORD m_dwTextureTotal; // 傈眉 荤侩且荐 乐绰 皋葛府.
  63. DWORD m_dwTextureFree;    // 泅犁 巢篮 皋葛府.
  64. DWORD m_dwVideoTotal;  // vram 傈眉 皋葛府.
  65. DWORD m_dwVideoFree;      // 泅犁 巢篮 vram 皋葛府 .
  66. BOOL m_bIsWindowActive;
  67. BOOL m_bIsWindowReady;
  68.     RECT m_rcWindow;
  69. DXG_DISPLAYINFO m_stDisplayInfo;
  70. DXG_MASKINFO m_stBitsMaskInfo;
  71. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  72. // 橇肺技胶甫 唱穿扁困茄 函荐急攫.
  73. static CWHDXGraphicWindow* m_pxDXGWnd;
  74. CWHDefProcess* m_pxDefProcess;
  75. VOID (*RenderProcess)(int);
  76. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  77. //3: Methods
  78. protected:
  79. BYTE FindDriverAndDevice();
  80. VOID FreeDXGEnumModeResources();
  81. HRESULT CreateDXG();
  82. HRESULT CreatePrimarySurface();
  83. HRESULT CreateZBuffer(GUID* pDeviceGUID);
  84. HRESULT Init3DDeviceObjects();
  85. HRESULT DestroyDXGObjects();
  86. public:
  87.     __inline LPDIRECTDRAW7 GetDirectDraw()     { return m_pDD; }
  88.     __inline LPDIRECT3D7 GetDirect3D() { return m_pD3D; }
  89. __inline LPDIRECT3DDEVICE7 Get3DDevice() { return m_pd3dDevice; }
  90.     __inline LPDIRECTDRAWSURFACE7 GetFrontBuffer()    { return m_pddsFrontBuffer; }
  91.     __inline LPDIRECTDRAWSURFACE7 GetBackBuffer()     { return m_pddsBackBuffer; }
  92.     __inline BYTE GetDeviceMode()     { return m_bDeviceModeFlag; }
  93. __inline BYTE GetScreenMode() { return m_bScreenModeFlag; }
  94.     DXG_MASKINFO GetRGBMaskInfoIN16Bits(LPDIRECTDRAWSURFACE7 pSurface);
  95. virtual VOID UpdateBoundsWnd();
  96. HRESULT ResetDXG(WORD wWidth, WORD wHeight, WORD wBPP, BYTE bScreenModeFlag, BYTE bDeviceModeFlag);
  97. BOOL Create(HINSTANCE hInst, LPTSTR lpCaption = NULL, CHAR *pszMenuName = NULL, CHAR* pszIconName = NULL, BYTE bScreenModeFlag = _DXG_SCREENMODE_WINDOW, BYTE bDeviceModeFlag = _DXG_DEVICEMODE_PRIMARY);
  98. ///////<---------------------------------------------------------------------------------------------------------------------------
  99. HFONT CreateGameFont(LPCSTR szFontName, INT nHeight, INT nWidth = 0, INT nWeight = FW_NORMAL, BOOL bItalic = FALSE, BOOL bULine = FALSE, BOOL bStrikeOut = FALSE, DWORD dwCharSet = HANGEUL_CHARSET);
  100. VOID CreateDefFont();
  101. VOID PutsHan(LPDIRECTDRAWSURFACE7 pSurface, INT nX, INT nY, COLORREF foreColor, COLORREF backColor, CHAR* szText, HFONT hFont = NULL);
  102. VOID PutsHan(LPDIRECTDRAWSURFACE7 pSurface, RECT rc, COLORREF foreColor, COLORREF backColor, CHAR* szText, HFONT hFont = NULL);
  103. SIZE GetStrLength(LPDIRECTDRAWSURFACE7 pSurface, HFONT hFont, CHAR* szFormat, ...);
  104. ///////<---------------------------------------------------------------------------------------------------------------------------
  105. BOOL  StringDivide(INT nDivideWidth, INT& nDividedLine, CHAR* szSrc, CHAR* szResult);
  106. // BOOL StringDivideLen(INT nDivideLen, INT& nDividedLine, CHAR* szSrc, CDLList<CHAR*>* m_pxpStr);
  107. VOID  StringPlus(CHAR* szResult, CHAR* szSrc, ...);
  108. CHAR* IntToStr(INT nNum);
  109. VOID UsedAndFreeMemoryCheck();
  110. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  111. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  112. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  113. WORD ConvertColor24To16(COLORREF dwColor);
  114. // 坊歹傅 窃荐葛澜.
  115. // 1. GDI侩 弊府扁 窃荐.(急, 荤阿屈殿阑 归辑乔胶俊 弊赴促.)
  116. HRESULT DrawWithGDI(RECT rc, LPDIRECTDRAWSURFACE7 pSurface, DWORD dwColor, BYTE bKind);
  117. // 2. WORD屈 单捞鸥 弊府扁 窃荐.(侨伎窜困肺 拿矾虐甫 八荤窍搁辑 归辑乔胶俊 弊赴促.)
  118. BOOL DrawWithImage(INT nX, INT nY, INT nXSize, INT nYSize, WORD* pwSrc);
  119. // 3. WORD屈 单捞鸥 弊府扁 窃荐.(扼牢窜困肺 拿矾虐甫 绊妨窍瘤 臼绊 归辑乔胶狼 努府俏 郴何康开俊父 弊赴促.)
  120. BOOL DrawWithImagePerLineClipRgn(INT nX, INT nY, INT nXSize, INT nYSize, WORD* pwSrc, WORD wClipWidth, WORD wClipHeight);
  121. // 4. Surface屈 单捞鸥 弊府扁 窃荐.(家胶狼 拿矾虐甫 绊妨窍搁辑 归辑乔胶俊 弊赴促.)
  122. BOOL DrawWithSurface(INT nX, INT nY, INT nXSize, INT nYSize, LPDIRECTDRAWSURFACE7 pddsSrc);
  123. // wChooseColor1篮 堪祸渴(0xC2)俊 措秦辑, wChooseColor2(0xC3)绰 赣府殿(漠, 扁鸥 函窍绰祸)狼 堪祸栏肺 敬促.
  124. // 5. 拘绵(0锅)棺 堪祸等 WORD屈 单捞鸥 弊府扁 窃荐.(归辑乔胶俊 弊赴促.)
  125. BOOL DrawWithImageForComp(INT nX, INT nY, RECT rcSrc, WORD* pwSrc, WORD wChooseColor1 = 0XFFFF, WORD wChooseColor2 = 0XFFFF);
  126. BOOL DrawWithImageForComp(INT nX, INT nY, INT nXSize, INT nYSize, WORD* pwSrc, WORD wChooseColor1 = 0XFFFF, WORD wChooseColor2 = 0XFFFF);
  127. // 6. 拘绵(0锅)棺 堪祸等 WORD屈 单捞鸥 弊府扁 窃荐.(归辑乔胶狼 努府俏 郴何康开俊父 弊赴促.)
  128. BOOL DrawWithImageForCompClipRgnBase(INT nX, INT nY, INT nXSize, INT nYSize, WORD* pwSrc, WORD wClipWidth, WORD wClipHeight, WORD wChooseColor1 = 0XFFFF, WORD wChooseColor2 = 0XFFFF);
  129. __inline VOID DrawWithImageForCompClipRgn(INT nX, INT nY, INT nXSize, INT nYSize, WORD* pwSrc, WORD wClipWidth, WORD wClipHeight, WORD wChooseColor1 = 0XFFFF, WORD wChooseColor2 = 0XFFFF, BOOL bLighted = FALSE)
  130. {
  131. if ( bLighted ) DrawWithABlendCompDataWithLightedColor(nX, nY, nXSize, nYSize, pwSrc, wClipWidth, wClipHeight, wChooseColor1, wChooseColor2);
  132. else DrawWithImageForCompClipRgnBase(nX, nY, nXSize, nYSize, pwSrc, wClipWidth, wClipHeight, wChooseColor1, wChooseColor2);
  133. }
  134. // 7. 拘绵(0锅)棺 堪祸等 WORD屈 单捞鸥 弊府扁 窃荐.(家胶皋葛府狼 康开俊辑 单胶飘康开皋葛府肺 弊赴促.)
  135. BOOL DrawWithImageForCompMemToMem(INT nX, INT nY, INT nXSize, INT nYSize, WORD* pwSrc, INT nDstXSize, INT nDstYSize, WORD* pwDst, WORD wChooseColor1 = 0XFFFF, WORD wChooseColor2 = 0XFFFF);
  136. // 8. 拘绵(0锅)棺 堪祸等 WORD屈 单捞鸥 弊府扁 窃荐.(拘绵等 单捞鸥狼 家胶皋葛府狼 康开俊辑 老何泛飘康开父阑 单胶飘康开皋葛府肺 弊赴促.)
  137. BOOL DrawWithImageForCompToMem(RECT rcWanted, WORD* pwSrc, WORD wChooseColor1, WORD wChooseColor2, WORD* pwDst);
  138. BOOL DrawWithImageForCompColorToMem(RECT rcWanted, WORD* pwSrc, WORD wColor, WORD* pwDst);
  139. // 9. 拘绵(0锅)棺 堪祸等 WORD屈 单捞鸥 弊府扁 窃荐.(拘绵等 单捞鸥狼 家胶康开苞 单胶飘康开狼 背瞒泛飘甫 舅颇喉坊爹秦辑 归辑乔胶俊弊赴促.)
  140. BOOL DrawWithABlendForIntersectCompData(INT nSrcX, INT nSrcY, 
  141.    INT nSrcXSize, INT nSrcYSize, WORD* pwSrc,
  142.    INT nDstX, INT nDstY,
  143.    INT nDstXSize, INT nDstYSize, WORD* pwDst, 
  144.    WORD wClipWidth, WORD wClipHeight,
  145.    BYTE bOpa = 50, BOOL bFocused = FALSE,
  146.    WORD wSrcChooseColor1 = 0XFFFF, WORD wSrcChooseColor2 = 0XFFFF,
  147.    WORD wDstChooseColor1 = 0XFFFF, WORD wDstChooseColor2 = 0XFFFF,
  148.    WORD wSrcColor = 0XFFFF, WORD wDstColor = 0XFFFF);
  149. // 10. 拘绵(0锅)棺 堪祸等 WORD屈 单捞鸥 弊府扁 窃荐.(拘绵等 单捞鸥狼 家胶康开阑 归辑乔胶客 舅颇喉坊爹茄促.)
  150. BOOL DrawWithABlendCompDataWithBackBuffer(INT nX, INT nY, 
  151.  INT nXSize, INT nYSize, WORD* pwSrc,
  152.  WORD wClipWidth, WORD wClipHeight,
  153.  WORD wChooseColor1 = 0XFFFF, WORD wChooseColor2 = 0XFFFF, BYTE bOpa = 50);
  154. // 11. 拘绵(0锅)棺 堪祸等 WORD屈 单捞鸥 弊府扁 窃荐.(拘绵等 单捞鸥狼 家胶康开阑 盔窍绰 拿矾肺 扼捞泼 惑怕肺(灌霸) 归辑乔胶俊 弊赴促.)
  155. BOOL DrawWithABlendCompDataWithLightedColor(INT nX, INT nY, 
  156.    INT nXSize, INT nYSize, WORD* pwSrc,
  157.    WORD wClipWidth, WORD wClipHeight,
  158.    WORD wChooseColor1 = 0XFFFF, WORD wChooseColor2 = 0XFFFF);
  159. // 弊覆磊 弊府扁 窃荐.
  160. // 12. 拘绵(0锅)棺 堪祸等 WORD屈 单捞鸥 弊府扁 窃荐.(拘绵等 单捞鸥狼 家胶康开狼 弊覆磊甫 归辑乔胶俊 舅颇喉坊爹茄促. 弊覆磊绰 臭捞啊 例馆栏肺 临绢甸绊 承捞绰 YSize父怒 疵绢唱辑 扁匡咯 归辑乔胶俊 嘛腮促.)
  161. BOOL DrawWithShadowABlend(INT nX, INT nY, 
  162.  INT nXSize, INT nYSize, WORD* pwSrc,
  163.  WORD wClipWidth, WORD wClipHeight, WORD* pwShadowClrSrc,
  164.  BOOL bBlend = FALSE, BYTE bShadowType = 48, BYTE bOpa = 50);
  165. VOID DrawWithShadowABlend(INT nX, INT nY, INT nXSize, INT nYSize, 
  166.                                          INT nPX, INT nPY, WORD* pwSrc, WORD wClipWidth, WORD wClipHeight, WORD* pwShadowClrSrc,
  167.  BOOL bBlend = FALSE, BYTE bOpa = 50);
  168. // 拿矾贸府.
  169. // 13.
  170. BOOL DrawWithImageForCompClipRgnColor(INT nX, INT nY, INT nXSize, INT nYSize, WORD* pwSrc, WORD wClipWidth, WORD wClipHeight, WORD wColor, BOOL bFocused = FALSE, BOOL bBlend = FALSE);
  171. BOOL DrawWithImageForCompClipRgnColor(INT nX, INT nY, INT nXSize, INT nYSize, WORD* pwSrc, WORD wClipWidth, WORD wClipHeight, WORD wColor, WORD wChooseColor1 = 0XFFFF, WORD wChooseColor2 = 0XFFFF);
  172. // 14.
  173. BOOL DrawWithImageForCompClipRgnGray(INT nX, INT nY, INT nXSize, INT nYSize, WORD* pwSrc , WORD wClipWidth, WORD wClipHeight, WORD wChooseColor1 = 0XFFFF, WORD wChooseColor2 = 0XFFFF);
  174. // 孺归贸府.
  175. // 15.
  176. VOID DrawWithGrayBackBuffer();
  177. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  178. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  179. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  180. HRESULT Present();
  181. HRESULT RestoreSurfaces();
  182. //4: Message Map
  183. public:
  184. virtual LRESULT MainWndProcDXG(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  185. virtual LRESULT OnSize(WPARAM wParam, LPARAM lParam);
  186. virtual LRESULT OnMove(WPARAM wParam, LPARAM lParam);
  187. virtual LRESULT OnSysKeyDown(WPARAM wParam, LPARAM lParam);
  188. virtual LRESULT OnGetMinMaxInfo(WPARAM wParam, LPARAM lParam);
  189. protected:
  190. __inline virtual LRESULT MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  191. if ( m_pxDefProcess ) return m_pxDefProcess->DefMainWndProc(hWnd, uMsg, wParam, lParam);
  192. else return MainWndProcDXG(hWnd, uMsg, wParam, lParam); 
  193. }
  194. virtual LRESULT OnDestroy();
  195. virtual LRESULT OnSetCursor();
  196. };
  197. CWHDXGraphicWindow* GetDXGWindowPtr();
  198. #endif //_WINDHORN_DXGRAPHIC