DXVIEW.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:8k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /****************************************************************************
  2.     Copyright (C) 1995-1997 Microsoft Corporation. All Rights Reserved.
  3.     DirectX Device Viewer - Common header file
  4. ****************************************************************************/
  5. #include <windows.h>
  6. #ifndef RC_INVOKED
  7. #include <windowsx.h>
  8. #include <mmsystem.h>
  9. #include <commctrl.h>
  10. #include <tchar.h>
  11. #include <ddraw.h>
  12. //#include <mmreg.h>
  13. #include <dsound.h>
  14. #include <dplay.h>
  15. #include <dplobby.h>
  16. #include <d3d.h>
  17. #include <dinput.h>
  18. #endif
  19. //================================================================
  20. // Defines
  21. //================================================================
  22. // Window Width and Height
  23. #define DXView_WIDTH       700
  24. #define DXView_HEIGHT      400
  25. #define DEF_TAB_SIZE        3
  26. // Child controls
  27. #define IDC_LV          0x2000
  28. #define IDC_TV          0x2003
  29. // Imagelist first and last icons
  30. #define IDI_FIRSTIMAGE  IDI_DIRECTX
  31. #define IDI_LASTIMAGE   IDI_CAPSOPEN
  32. #define IDC_SPLIT                       100
  33. #define IDD_ABORTPRINTDLG               1001
  34. #define IDM_EXIT                        40001
  35. #define IDM_ABOUT                       40002
  36. #define IDM_VIEWAVAIL                   40003
  37. #define IDM_VIEWALL                     40004
  38. #define IDM_PRINT                       40005
  39. #define IDM_PRINTALL                    40006
  40. #define IDM_PRINTTOFILE                 40007
  41. #define IDI_DIRECTX                     100
  42. #define IDI_CAPS                        101
  43. #define IDI_CAPSOPEN                    102
  44. #define IDS_PRINT_WARNING               1
  45. #define IDS_PRINT_NEEDSELECT            2
  46. #define IDS_PRINT_NOROOT                3
  47. #define TIMER_PERIOD 500
  48. //================================================================
  49. // Typedefs
  50. //================================================================
  51. typedef struct 
  52. {
  53.     HDC         hdcPrint;       // In:      Printer DC
  54.     HWND        hTreeWnd;       // In:      tree window
  55.     HTREEITEM   hCurrTree;      // In:      current tree item handle
  56.     DWORD       dwCharWidth;    // In:      average char width
  57.     DWORD       dwLineHeight;   // In:      max line height
  58.     DWORD       dwCurrLine;     // In/Out:  curr line position on page
  59.     DWORD       dwCharsPerLine; // In:      maximum chars per line (based on avg. char width)
  60.     DWORD       dwLinesPerPage; // In:      maximum lines per page
  61.     DWORD       dwCurrIndent;   // In:      Current tab setting
  62.     BOOL        fStartPage;     // In/Out:  need to a start new page ?!?
  63. } PRINTCBINFO;
  64. typedef void (*SELCALLBACK)(LPARAM lParam1, LPARAM lParam2);
  65. typedef BOOL (*PRINTCALLBACK)(LPARAM lParam1, LPARAM lParam2, PRINTCBINFO * lpInfo);
  66. typedef struct
  67. {
  68.     SELCALLBACK     Callback;
  69.     LPARAM          lParam1;
  70.     LPARAM          lParam2;
  71.     PRINTCALLBACK   printCallback;
  72. } NODEINFO;
  73. typedef struct
  74. {
  75.     char *  szName;         // name of cap
  76.     DWORD   dwOffset;       // offset to cap
  77.     DWORD   dwFlag;         // bit flag for cal
  78. } CAPDEF;
  79. typedef struct
  80. {
  81.     char *szName;         // name of cap
  82.     SELCALLBACK     Callback;
  83.     LPARAM          lParam2;
  84.     PRINTCALLBACK   printCallback;
  85. } CAPDEFS;
  86. typedef struct
  87. {
  88.     D3DDEVICEDESC d3dDeviceDesc;
  89.     GUID* device;       // DirectDraw device (can be NULL)
  90.     GUID  driver;       // Direct3D driver
  91. } CAP3DDEVICEDESC;
  92. typedef struct
  93. {
  94. GUID guidInstance;
  95. DWORD dwRefresh;
  96. } LV_INSTANCEGUIDSTRUCT, * LPLV_INSTANCEGUIDSTRUCT;
  97. typedef struct LOCALAPP
  98. {
  99. struct LOCALAPP * lpNext;
  100. GUID guidApplication;
  101.     char szAppNameA[1];
  102. } LOCALAPP, *LPLOCALAPP;
  103. typedef struct
  104. {
  105. HWND hwndLV;
  106. LPLOCALAPP  * lp;
  107. } ENUMLOCALAPPSTRUCT, *LPENUMLOCALAPPSTRUCT;
  108. //================================================================
  109. // Function prototypes
  110. //================================================================
  111. LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
  112. LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
  113. BOOL InitInstance(HINSTANCE hInstance, LPSTR lpCmdLine, int nCmdShow, int iWidth, int iHeight);
  114. //================================================================
  115. // DXView treeview/listview helper functions
  116. //================================================================
  117. BOOL DXView_OnCreate(HWND hwnd);
  118. void DXView_OnCommand(HWND hwnd, WPARAM wParam);
  119. void DXView_OnSize(HWND hwnd);
  120. void DXView_OnTreeSelect(HWND hwndTV, NM_TREEVIEW *ptv);
  121. void DXView_OnListViewDblClick(HWND hwndLV, NM_LISTVIEW *plv);
  122. void DXView_Cleanup(void);
  123. void DXView_FillTree(HWND hwndTV);
  124. BOOL DXView_InitImageList(void);
  125. BOOL DXView_OnPrint (HWND hWindow, HWND hTreeView, BOOL fPrintAll);
  126. BOOL DXView_OnFile (HWND hWindow, HWND hTreeWnd,BOOL fPrintAll);
  127. void LVAddColumn(HWND hwndLV, int i, char *name, int width);
  128. int  LVAddText(HWND hwndLV, int col, const char *sz, ...);
  129. void LVDeleteAllItems(HWND hwndLV);
  130. HTREEITEM TVAddNode(HTREEITEM hParent, char *szText, 
  131.                     BOOL fKids, int iImage, 
  132.                     SELCALLBACK Callback, 
  133.                     LPARAM lParam1, LPARAM lParam2,
  134.                     PRINTCALLBACK printCallback);
  135. void AddCapsToTV(HTREEITEM hParent, CAPDEFS *pcds, LPARAM lParam1);
  136. void AddColsToLV(void);
  137. void AddCapsToLV(CAPDEF *pcd, LPVOID pv);
  138. void AddMoreCapsToLV(CAPDEF *pcd, LPVOID pv);
  139. BOOL PrintCapsToDC(CAPDEF *pcd, LPVOID pv, PRINTCBINFO * lpInfo);
  140. // Caps add to ListView callbacks
  141. void DDAddCaps(LPARAM lParam1, LPARAM lParam2);
  142. void DSAddCaps(LPARAM lParam1, LPARAM lParam2);
  143. void DSCAddCaps(LPARAM lParam1, LPARAM lParam2);
  144. void DPAddCaps(LPARAM lParam1, LPARAM lParam2);
  145. void DPAddLocalApps(LPARAM lParam1, LPARAM lParam2);
  146. void D3AddCaps(LPARAM lParam1, LPARAM lParam2);
  147. void D3AddLineCaps(LPARAM lParam1, LPARAM lParam2);
  148. void D3AddTexF(LPARAM lParam1, LPARAM lParam2);
  149. void DDAddVideoModes(LPARAM lParam1, LPARAM lParam2);
  150. void DPAddSessions(LPARAM lParam1, LPARAM lParam2);
  151. void DDFourCCFormat(LPARAM lParam1, LPARAM lParam2);
  152. // Caps Print Callbacks
  153. BOOL DDPrintCaps (LPARAM lParam1, LPARAM lParam2, PRINTCBINFO * lpInfo);
  154. BOOL DSPrintCaps(LPARAM lParam1, LPARAM lParam2, PRINTCBINFO * lpInfo);
  155. BOOL DSCPrintCaps(LPARAM lParam1, LPARAM lParam2, PRINTCBINFO * lpInfo);
  156. BOOL DPPrintCaps(LPARAM lParam1, LPARAM lParam2, PRINTCBINFO * lpInfo);
  157. BOOL DPPrintLocalApps(LPARAM lParam1, LPARAM lParam2, PRINTCBINFO * lpInfo);
  158. BOOL D3PrintCaps(LPARAM lParam1, LPARAM lParam2, PRINTCBINFO * lpInfo);
  159. BOOL DDPrintVideoModes(LPARAM lParam1, LPARAM lParam2, PRINTCBINFO * lpInfo);
  160. BOOL DPPrintSessions(LPARAM lParam1, LPARAM lParam2, PRINTCBINFO * lpInfo);
  161. BOOL DDPrintFourCCFormat(LPARAM lParam1, LPARAM lParam2, PRINTCBINFO * lpInfo);
  162. // Printer Helper functions
  163. BOOL PrintStartPage (PRINTCBINFO * pci);
  164. BOOL PrintEndPage (PRINTCBINFO * pci);
  165. BOOL PrintLine (int x, int y, LPCTSTR lpszBuff, DWORD cchBuff, PRINTCBINFO * pci);
  166. BOOL PrintNextLine (PRINTCBINFO * pci);
  167. //DirectPlay helper functions
  168. HRESULT EnumSessions( LPDIRECTPLAY3A lpDP3A );
  169. void RemoveStaleSessions();
  170. void ResetListViewRefresh( HWND hwndLV );
  171. // DirectInput helper functions
  172. void DI_FillTree(void);
  173. void FreeLocalAppList();
  174. void GetAppName(LPSTR szNameBuffer, LPCGUID lpguidApplication, DWORD dwBufferSize);
  175. #ifdef DX_3D
  176. HRESULT CALLBACK D3EnumCallback(
  177.             LPGUID pid,
  178.             LPSTR lpDriverDesc,
  179.             LPSTR lpDriverName, 
  180.             LPD3DDEVICEDESC lpD3DDeviceDesc1, 
  181.             LPD3DDEVICEDESC lpD3DDeviceDesc2, 
  182.             LPVOID lpContext);
  183. #endif
  184. //================================================================
  185. // DXView external variables
  186. //================================================================
  187. extern HINSTANCE    g_hInstance;
  188. extern HWND         g_hwndLV;        // List view
  189. extern HWND         g_hwndTV;        // Tree view