home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / graphics / directx / misc / rmerror.c < prev    next >
C/C++ Source or Header  |  1997-07-14  |  16KB  |  303 lines

  1. /*
  2.  *  Copyright (C) 1995, 1996 Microsoft Corporation. All Rights Reserved.
  3.  *
  4.  *  File: rmerror.cpp
  5.  *
  6.  *  Error reporting code for D3DRM examples.
  7.  *
  8.  */
  9.  
  10. #include "rmerror.h"
  11. #include <stdarg.h>
  12.  
  13. /* Msg
  14.  * Displays a message box containing the given formatted string.
  15.  */
  16. void __cdecl
  17. Msg( LPSTR fmt, ... )
  18. {
  19.     char buff[256];
  20.     va_list args;
  21.     
  22.     va_start(args, fmt);
  23.     wvsprintf(buff, fmt, args);
  24.     va_end(args);
  25.     
  26.     lstrcat(buff, "\r\n");
  27.     MessageBox( NULL, buff, "D3DRM Example Message", MB_OK );
  28. }
  29.  
  30. /*
  31.  * D3DRMErrorToString
  32.  * Returns a pointer to a string describing the given DD, D3D or D3DRM error code.
  33.  */
  34. char*
  35. D3DRMErrorToString(HRESULT error)
  36. {
  37.     switch(error) {
  38.         case DD_OK:
  39.         /* Also includes D3D_OK and D3DRM_OK */
  40.             return "No error.\0";
  41.         case DDERR_ALREADYINITIALIZED:
  42.             return "This object is already initialized.\0";
  43.         case DDERR_BLTFASTCANTCLIP:
  44.             return "Return if a clipper object is attached to the source surface passed into a BltFast call.\0";
  45.         case DDERR_CANNOTATTACHSURFACE:
  46.             return "This surface can not be attached to the requested surface.\0";
  47.         case DDERR_CANNOTDETACHSURFACE:
  48.             return "This surface can not be detached from the requested surface.\0";
  49.         case DDERR_CANTCREATEDC:
  50.             return "Windows can not create any more DCs.\0";
  51.         case DDERR_CANTDUPLICATE:
  52.             return "Can't duplicate primary & 3D surfaces, or surfaces that are implicitly created.\0";
  53.         case DDERR_CLIPPERISUSINGHWND:
  54.             return "An attempt was made to set a cliplist for a clipper object that is already monitoring an hwnd.\0";
  55.         case DDERR_COLORKEYNOTSET:
  56.             return "No src color key specified for this operation.\0";
  57.         case DDERR_CURRENTLYNOTAVAIL:
  58.             return "Support is currently not available.\0";
  59.         case DDERR_DIRECTDRAWALREADYCREATED:
  60.             return "A DirectDraw object representing this driver has already been created for this process.\0";
  61.         case DDERR_EXCEPTION:
  62.             return "An exception was encountered while performing the requested operation.\0";
  63.         case DDERR_EXCLUSIVEMODEALREADYSET:
  64.             return "An attempt was made to set the cooperative level when it was already set to exclusive.\0";
  65.         case DDERR_GENERIC:
  66.             return "Generic failure.\0";
  67.         case DDERR_HEIGHTALIGN:
  68.             return "Height of rectangle provided is not a multiple of reqd alignment.\0";
  69.         case DDERR_HWNDALREADYSET:
  70.             return "The CooperativeLevel HWND has already been set. It can not be reset while the process has surfaces or palettes created.\0";
  71.         case DDERR_HWNDSUBCLASSED:
  72.             return "HWND used by DirectDraw CooperativeLevel has been subclassed, this prevents DirectDraw from restoring state.\0";
  73.         case DDERR_IMPLICITLYCREATED:
  74.             return "This surface can not be restored because it is an implicitly created surface.\0";
  75.         case DDERR_INCOMPATIBLEPRIMARY:
  76.             return "Unable to match primary surface creation request with existing primary surface.\0";
  77.         case DDERR_INVALIDCAPS:
  78.             return "One or more of the caps bits passed to the callback are incorrect.\0";
  79.         case DDERR_INVALIDCLIPLIST:
  80.             return "DirectDraw does not support the provided cliplist.\0";
  81.         case DDERR_INVALIDDIRECTDRAWGUID:
  82.             return "The GUID passed to DirectDrawCreate is not a valid DirectDraw driver identifier.\0";
  83.         case DDERR_INVALIDMODE:
  84.             return "DirectDraw does not support the requested mode.\0";
  85.         case DDERR_INVALIDOBJECT:
  86.             return "DirectDraw received a pointer that was an invalid DIRECTDRAW object.\0";
  87.         case DDERR_INVALIDPARAMS:
  88.             return "One or more of the parameters passed to the function are incorrect.\0";
  89.         case DDERR_INVALIDPIXELFORMAT:
  90.             return "The pixel format was invalid as specified.\0";
  91.         case DDERR_INVALIDPOSITION:
  92.             return "Returned when the position of the overlay on the destination is no longer legal for that destination.\0";
  93.         case DDERR_INVALIDRECT:
  94.             return "Rectangle provided was invalid.\0";
  95.         case DDERR_LOCKEDSURFACES:
  96.             return "Operation could not be carried out because one or more surfaces are locked.\0";
  97.         case DDERR_NO3D:
  98.             return "There is no 3D present.\0";
  99.         case DDERR_NOALPHAHW:
  100.             return "Operation could not be carried out because there is no alpha accleration hardware present or available.\0";
  101.         case DDERR_NOBLTHW:
  102.             return "No blitter hardware present.\0";
  103.         case DDERR_NOCLIPLIST:
  104.             return "No cliplist available.\0";
  105.         case DDERR_NOCLIPPERATTACHED:
  106.             return "No clipper object attached to surface object.\0";
  107.         case DDERR_NOCOLORCONVHW:
  108.             return "Operation could not be carried out because there is no color conversion hardware present or available.\0";
  109.         case DDERR_NOCOLORKEY:
  110.             return "Surface doesn't currently have a color key\0";
  111.         case DDERR_NOCOLORKEYHW:
  112.             return "Operation could not be carried out because there is no hardware support of the destination color key.\0";
  113.         case DDERR_NOCOOPERATIVELEVELSET:
  114.             return "Create function called without DirectDraw object method SetCooperativeLevel being called.\0";
  115.         case DDERR_NODC:
  116.             return "No DC was ever created for this surface.\0";
  117.         case DDERR_NODDROPSHW:
  118.             return "No DirectDraw ROP hardware.\0";
  119.         case DDERR_NODIRECTDRAWHW:
  120.             return "A hardware-only DirectDraw object creation was attempted but the driver did not support any hardware.\0";
  121.         case DDERR_NOEMULATION:
  122.             return "Software emulation not available.\0";
  123.         case DDERR_NOEXCLUSIVEMODE:
  124.             return "Operation requires the application to have exclusive mode but the application does not have exclusive mode.\0";
  125.         case DDERR_NOFLIPHW:
  126.             return "Flipping visible surfaces is not supported.\0";
  127.         case DDERR_NOGDI:
  128.             return "There is no GDI present.\0";
  129.         case DDERR_NOHWND:
  130.             return "Clipper notification requires an HWND or no HWND has previously been set as the CooperativeLevel HWND.\0";
  131.         case DDERR_NOMIRRORHW:
  132.             return "Operation could not be carried out because there is no hardware present or available.\0";
  133.         case DDERR_NOOVERLAYDEST:
  134.             return "Returned when GetOverlayPosition is called on an overlay that UpdateOverlay has never been called on to establish a destination.\0";
  135.         case DDERR_NOOVERLAYHW:
  136.             return "Operation could not be carried out because there is no overlay hardware present or available.\0";
  137.         case DDERR_NOPALETTEATTACHED:
  138.             return "No palette object attached to this surface.\0";
  139.         case DDERR_NOPALETTEHW:
  140.             return "No hardware support for 16 or 256 color palettes.\0";
  141.         case DDERR_NORASTEROPHW:
  142.             return "Operation could not be carried out because there is no appropriate raster op hardware present or available.\0";
  143.         case DDERR_NOROTATIONHW:
  144.             return "Operation could not be carried out because there is no rotation hardware present or available.\0";
  145.         case DDERR_NOSTRETCHHW:
  146.             return "Operation could not be carried out because there is no hardware support for stretching.\0";
  147.         case DDERR_NOT4BITCOLOR:
  148.             return "DirectDrawSurface is not in 4 bit color palette and the requested operation requires 4 bit color palette.\0";
  149.         case DDERR_NOT4BITCOLORINDEX:
  150.             return "DirectDrawSurface is not in 4 bit color index palette and the requested operation requires 4 bit color index palette.\0";
  151.         case DDERR_NOT8BITCOLOR:
  152.             return "DirectDrawSurface is not in 8 bit color mode and the requested operation requires 8 bit color.\0";
  153.         case DDERR_NOTAOVERLAYSURFACE:
  154.             return "Returned when an overlay member is called for a non-overlay surface.\0";
  155.         case DDERR_NOTEXTUREHW:
  156.             return "Operation could not be carried out because there is no texture mapping hardware present or available.\0";
  157.         case DDERR_NOTFLIPPABLE:
  158.             return "An attempt has been made to flip a surface that is not flippable.\0";
  159.         case DDERR_NOTFOUND:
  160.             return "Requested item was not found.\0";
  161.         case DDERR_NOTLOCKED:
  162.             return "Surface was not locked.  An attempt to unlock a surface that was not locked at all, or by this process, has been attempted.\0";
  163.         case DDERR_NOTPALETTIZED:
  164.             return "The surface being used is not a palette-based surface.\0";
  165.         case DDERR_NOVSYNCHW:
  166.             return "Operation could not be carried out because there is no hardware support for vertical blank synchronized operations.\0";
  167.         case DDERR_NOZBUFFERHW:
  168.             return "Operation could not be carried out because there is no hardware support for zbuffer blitting.\0";
  169.         case DDERR_NOZOVERLAYHW:
  170.             return "Overlay surfaces could not be z layered based on their BltOrder because the hardware does not support z layering of overlays.\0";
  171.         case DDERR_OUTOFCAPS:
  172.             return "The hardware needed for the requested operation has already been allocated.\0";
  173.         case DDERR_OUTOFMEMORY:
  174.             return "DirectDraw does not have enough memory to perform the operation.\0";
  175.         case DDERR_OUTOFVIDEOMEMORY:
  176.             return "DirectDraw does not have enough memory to perform the operation.\0";
  177.         case DDERR_OVERLAYCANTCLIP:
  178.             return "The hardware does not support clipped overlays.\0";
  179.         case DDERR_OVERLAYCOLORKEYONLYONEACTIVE:
  180.             return "Can only have ony color key active at one time for overlays.\0";
  181.         case DDERR_OVERLAYNOTVISIBLE:
  182.             return "Returned when GetOverlayPosition is called on a hidden overlay.\0";
  183.         case DDERR_PALETTEBUSY:
  184.             return "Access to this palette is being refused because the palette is already locked by another thread.\0";
  185.         case DDERR_PRIMARYSURFACEALREADYEXISTS:
  186.             return "This process already has created a primary surface.\0";
  187.         case DDERR_REGIONTOOSMALL:
  188.             return "Region passed to Clipper::GetClipList is too small.\0";
  189.         case DDERR_SURFACEALREADYATTACHED:
  190.             return "This surface is already attached to the surface it is being attached to.\0";
  191.         case DDERR_SURFACEALREADYDEPENDENT:
  192.             return "This surface is already a dependency of the surface it is being made a dependency of.\0";
  193.         case DDERR_SURFACEBUSY:
  194.             return "Access to this surface is being refused because the surface is already locked by another thread.\0";
  195.         case DDERR_SURFACEISOBSCURED:
  196.             return "Access to surface refused because the surface is obscured.\0";
  197.         case DDERR_SURFACELOST:
  198.             return "Access to this surface is being refused because the surface memory is gone. The DirectDrawSurface object representing this surface should have Restore called on it.\0";
  199.         case DDERR_SURFACENOTATTACHED:
  200.             return "The requested surface is not attached.\0";
  201.         case DDERR_TOOBIGHEIGHT:
  202.             return "Height requested by DirectDraw is too large.\0";
  203.         case DDERR_TOOBIGSIZE:
  204.             return "Size requested by DirectDraw is too large, but the individual height and width are OK.\0";
  205.         case DDERR_TOOBIGWIDTH:
  206.             return "Width requested by DirectDraw is too large.\0";
  207.         case DDERR_UNSUPPORTED:
  208.             return "Action not supported.\0";
  209.         case DDERR_UNSUPPORTEDFORMAT:
  210.             return "FOURCC format requested is unsupported by DirectDraw.\0";
  211.         case DDERR_UNSUPPORTEDMASK:
  212.             return "Bitmask in the pixel format requested is unsupported by DirectDraw.\0";
  213.         case DDERR_VERTICALBLANKINPROGRESS:
  214.             return "Vertical blank is in progress.\0";
  215.         case DDERR_WASSTILLDRAWING:
  216.             return "Informs DirectDraw that the previous Blt which is transfering information to or from this Surface is incomplete.\0";
  217.         case DDERR_WRONGMODE:
  218.             return "This surface can not be restored because it was created in a different mode.\0";
  219.         case DDERR_XALIGN:
  220.             return "Rectangle provided was not horizontally aligned on required boundary.\0";
  221.         case D3DERR_BADMAJORVERSION:
  222.             return "D3DERR_BADMAJORVERSION\0";
  223.         case D3DERR_BADMINORVERSION:
  224.             return "D3DERR_BADMINORVERSION\0";
  225.         case D3DERR_EXECUTE_LOCKED:
  226.             return "D3DERR_EXECUTE_LOCKED\0";
  227.         case D3DERR_EXECUTE_NOT_LOCKED:
  228.             return "D3DERR_EXECUTE_NOT_LOCKED\0";
  229.         case D3DERR_EXECUTE_CREATE_FAILED:
  230.             return "D3DERR_EXECUTE_CREATE_FAILED\0";
  231.         case D3DERR_EXECUTE_DESTROY_FAILED:
  232.             return "D3DERR_EXECUTE_DESTROY_FAILED\0";
  233.         case D3DERR_EXECUTE_LOCK_FAILED:
  234.             return "D3DERR_EXECUTE_LOCK_FAILED\0";
  235.         case D3DERR_EXECUTE_UNLOCK_FAILED:
  236.             return "D3DERR_EXECUTE_UNLOCK_FAILED\0";
  237.         case D3DERR_EXECUTE_FAILED:
  238.             return "D3DERR_EXECUTE_FAILED\0";
  239.         case D3DERR_EXECUTE_CLIPPED_FAILED:
  240.             return "D3DERR_EXECUTE_CLIPPED_FAILED\0";
  241.         case D3DERR_TEXTURE_NO_SUPPORT:
  242.             return "D3DERR_TEXTURE_NO_SUPPORT\0";
  243.         case D3DERR_TEXTURE_NOT_LOCKED:
  244.             return "D3DERR_TEXTURE_NOT_LOCKED\0";
  245.         case D3DERR_TEXTURE_LOCKED:
  246.             return "D3DERR_TEXTURELOCKED\0";
  247.         case D3DERR_TEXTURE_CREATE_FAILED:
  248.             return "D3DERR_TEXTURE_CREATE_FAILED\0";
  249.         case D3DERR_TEXTURE_DESTROY_FAILED:
  250.             return "D3DERR_TEXTURE_DESTROY_FAILED\0";
  251.         case D3DERR_TEXTURE_LOCK_FAILED:
  252.             return "D3DERR_TEXTURE_LOCK_FAILED\0";
  253.         case D3DERR_TEXTURE_UNLOCK_FAILED:
  254.             return "D3DERR_TEXTURE_UNLOCK_FAILED\0";
  255.         case D3DERR_TEXTURE_LOAD_FAILED:
  256.             return "D3DERR_TEXTURE_LOAD_FAILED\0";
  257.         case D3DERR_MATRIX_CREATE_FAILED:
  258.             return "D3DERR_MATRIX_CREATE_FAILED\0";
  259.         case D3DERR_MATRIX_DESTROY_FAILED:
  260.             return "D3DERR_MATRIX_DESTROY_FAILED\0";
  261.         case D3DERR_MATRIX_SETDATA_FAILED:
  262.             return "D3DERR_MATRIX_SETDATA_FAILED\0";
  263.         case D3DERR_SETVIEWPORTDATA_FAILED:
  264.             return "D3DERR_SETVIEWPORTDATA_FAILED\0";
  265.         case D3DERR_MATERIAL_CREATE_FAILED:
  266.             return "D3DERR_MATERIAL_CREATE_FAILED\0";
  267.         case D3DERR_MATERIAL_DESTROY_FAILED:
  268.             return "D3DERR_MATERIAL_DESTROY_FAILED\0";
  269.         case D3DERR_MATERIAL_SETDATA_FAILED:
  270.             return "D3DERR_MATERIAL_SETDATA_FAILED\0";
  271.         case D3DERR_LIGHT_SET_FAILED:
  272.             return "D3DERR_LIGHT_SET_FAILED\0";
  273.     case D3DRMERR_BADOBJECT:
  274.         return "D3DRMERR_BADOBJECT\0";
  275.     case D3DRMERR_BADTYPE:
  276.         return "D3DRMERR_BADTYPE\0";
  277.     case D3DRMERR_BADALLOC:
  278.         return "D3DRMERR_BADALLOC\0";
  279.     case D3DRMERR_FACEUSED:
  280.         return "D3DRMERR_FACEUSED\0";
  281.     case D3DRMERR_NOTFOUND:
  282.         return "D3DRMERR_NOTFOUND\0";
  283.     case D3DRMERR_NOTDONEYET:
  284.         return "D3DRMERR_NOTDONEYET\0";
  285.     case D3DRMERR_FILENOTFOUND:
  286.         return "The file was not found.\0";
  287.     case D3DRMERR_BADFILE:
  288.         return "D3DRMERR_BADFILE\0";
  289.     case D3DRMERR_BADDEVICE:
  290.         return "D3DRMERR_BADDEVICE\0";
  291.     case D3DRMERR_BADVALUE:
  292.         return "D3DRMERR_BADVALUE\0";
  293.     case D3DRMERR_BADMAJORVERSION:
  294.         return "D3DRMERR_BADMAJORVERSION\0";
  295.     case D3DRMERR_BADMINORVERSION:
  296.         return "D3DRMERR_BADMINORVERSION\0";
  297.     case D3DRMERR_UNABLETOEXECUTE:
  298.         return "D3DRMERR_UNABLETOEXECUTE\0";
  299.         default:
  300.             return "Unrecognized error value.\0";
  301.     }
  302. }
  303.