home *** CD-ROM | disk | FTP | other *** search
/ NEXT Generation 27 / NEXT27.iso / pc / demos / emperor / dx3.exe / SDK / SAMPLES / MISC / LBPRINTF.C < prev    next >
C/C++ Source or Header  |  1996-08-28  |  8KB  |  227 lines

  1. /*==========================================================================
  2.  *
  3.  *  Copyright (C) 1995 Microsoft Corporation. All Rights Reserved.
  4.  *
  5.  *  File:       lbprintf.c
  6.  *  Content:    Routines to display text in a listbox
  7.  *
  8.  ***************************************************************************/
  9. #define WIN32_LEAN_AND_MEAN
  10. #include <windows.h>
  11. #include <windowsx.h>
  12. #include <ddraw.h>
  13. #include "lbprintf.h"
  14.  
  15. static HWND     hWndListBox;
  16. static DWORD    dwPos;
  17.  
  18. /*
  19.  * LBCreate
  20.  *
  21.  * Create a list box on a given parent window
  22.  */
  23. void LBCreate( HWND hWnd, DWORD pos )
  24. {
  25.     hWndListBox = CreateWindow(
  26.         "listbox",              // class
  27.         NULL,                   // caption
  28.         WS_BORDER | WS_CHILDWINDOW | WS_VSCROLL | LBS_NOINTEGRALHEIGHT, // style
  29.         0,                      // x pos
  30.         0,                      // y pos
  31.         0,                      // width
  32.         0,                      // height
  33.         hWnd,                   // parent window
  34.         NULL,                   // menu 
  35.         GetWindowInstance( hWnd ), // instance
  36.         NULL                    // parms
  37.         );
  38.  
  39.     ShowWindow( hWndListBox, SW_NORMAL );
  40.     UpdateWindow( hWndListBox );
  41.  
  42.     dwPos = pos;
  43.     if( dwPos > 100 )
  44.     {
  45.         dwPos = 100;
  46.     }
  47.  
  48. } /* LBCreate */
  49.  
  50. /*
  51.  * LBSize
  52.  *
  53.  * New size for the listbox.   Should be called whenever the parent window
  54.  * is resized
  55.  */
  56. void LBSize( DWORD width, DWORD height )
  57. {
  58.     DWORD       y;
  59.  
  60.     y = (height*(100-dwPos))/100;
  61.     MoveWindow( hWndListBox, 0, y, width-1, height-y-1, TRUE );
  62.  
  63. } /* LBSize */
  64.  
  65. /*
  66.  * LBClear
  67.  *
  68.  * Clear the listbox
  69.  */
  70. void LBClear( void )
  71. {
  72.     SendMessage( hWndListBox, LB_RESETCONTENT, 0, 0L );
  73.  
  74. } /* LBClear */
  75.  
  76. /*
  77.  * LBPrintf
  78.  */
  79. void __cdecl LBPrintf( LPSTR fmt, ... )
  80. {
  81.     char        buff[512];
  82.     UINT        sel;
  83.  
  84.     wvsprintf( buff, fmt, (LPVOID)(&fmt+1) );
  85.     SendMessage( hWndListBox, LB_ADDSTRING, 0, (LONG) (LPSTR) buff );
  86.     sel = (UINT) SendMessage( hWndListBox, LB_GETCOUNT, 0, 0L );
  87.     if( sel != LB_ERR )
  88.     {
  89.         SendMessage( hWndListBox, LB_SETCURSEL, sel-1, 0L );
  90.     }
  91.  
  92. } /* LBPrintf */
  93.  
  94. typedef struct
  95. {
  96.     HRESULT     rval;
  97.     LPSTR       str;
  98. } ERRLIST;
  99.  
  100. static ERRLIST elErrors[] =
  101. {
  102.     { DD_OK, "DD_OK" },
  103.     { DDERR_ALREADYINITIALIZED, "DDERR_ALREADYINITIALIZED" },
  104.     { DDERR_CANNOTATTACHSURFACE, "DDERR_CANNOTATTACHSURFACE" },
  105.     { DDERR_CANNOTDETACHSURFACE, "DDERR_CANNOTDETACHSURFACE" },
  106.     { DDERR_CURRENTLYNOTAVAIL, "DDERR_CURRENTLYNOTAVAIL" },
  107.     { DDERR_EXCEPTION, "DDERR_EXCEPTION" },
  108.     { DDERR_GENERIC, "DDERR_GENERIC" },
  109.     { DDERR_HEIGHTALIGN, "DDERR_HEIGHTALIGN" },
  110.     { DDERR_INCOMPATIBLEPRIMARY, "DDERR_INCOMPATIBLEPRIMARY" },
  111.     { DDERR_INVALIDCAPS, "DDERR_INVALIDCAPS" },
  112.     { DDERR_INVALIDCLIPLIST, "DDERR_INVALIDCLIPLIST" },
  113.     { DDERR_INVALIDMODE, "DDERR_INVALIDMODE" },
  114.     { DDERR_INVALIDOBJECT, "DDERR_INVALIDOBJECT" },
  115.     { DDERR_INVALIDPARAMS, "DDERR_INVALIDPARAMS" },
  116.     { DDERR_INVALIDPIXELFORMAT, "DDERR_INVALIDPIXELFORMAT" },
  117.     { DDERR_INVALIDRECT, "DDERR_INVALIDRECT" },
  118.     { DDERR_LOCKEDSURFACES, "DDERR_LOCKEDSURFACES" },
  119.     { DDERR_NO3D, "DDERR_NO3D" },
  120.     { DDERR_NOALPHAHW, "DDERR_NOALPHAHW" },
  121.     { DDERR_NOCLIPLIST, "DDERR_NOCLIPLIST" },
  122.     { DDERR_NOCOLORCONVHW, "DDERR_NOCOLORCONVHW" },
  123.     { DDERR_NOCOOPERATIVELEVELSET, "DDERR_NOCOOPERATIVELEVELSET" },
  124.     { DDERR_NOCOLORKEY, "DDERR_NOCOLORKEY" },
  125.     { DDERR_NOCOLORKEYHW, "DDERR_NOCOLORKEYHW" },
  126.     { DDERR_NOEXCLUSIVEMODE, "DDERR_NOEXCLUSIVEMODE" },
  127.     { DDERR_NOFLIPHW, "DDERR_NOFLIPHW" },
  128.     { DDERR_NOGDI, "DDERR_NOGDI" },
  129.     { DDERR_NOMIRRORHW, "DDERR_NOMIRRORHW" },
  130.     { DDERR_NOTFOUND, "DDERR_NOTFOUND" },
  131.     { DDERR_NOOVERLAYHW, "DDERR_NOOVERLAYHW" },
  132.     { DDERR_NORASTEROPHW, "DDERR_NORASTEROPHW" },
  133.     { DDERR_NOROTATIONHW, "DDERR_NOROTATIONHW" },
  134.     { DDERR_NOSTRETCHHW, "DDERR_NOSTRETCHHW" },
  135.     { DDERR_NOT4BITCOLOR, "DDERR_NOT4BITCOLOR" },
  136.     { DDERR_NOT4BITCOLORINDEX, "DDERR_NOT4BITCOLORINDEX" },
  137.     { DDERR_NOT8BITCOLOR, "DDERR_NOT8BITCOLOR" },
  138.     { DDERR_NOTEXTUREHW, "DDERR_NOTEXTUREHW" },
  139.     { DDERR_NOVSYNCHW, "DDERR_NOVSYNCHW" },
  140.     { DDERR_NOZBUFFERHW, "DDERR_NOZBUFFERHW" },
  141.     { DDERR_NOZOVERLAYHW, "DDERR_NOZOVERLAYHW" },
  142.     { DDERR_OUTOFCAPS, "DDERR_OUTOFCAPS" },
  143.     { DDERR_OUTOFMEMORY, "DDERR_OUTOFMEMORY" },
  144.     { DDERR_OUTOFVIDEOMEMORY, "DDERR_OUTOFVIDEOMEMORY" },
  145.     { DDERR_OVERLAYCANTCLIP, "DDERR_OVERLAYCANTCLIP" },
  146.     { DDERR_OVERLAYCOLORKEYONLYONEACTIVE, "DDERR_OVERLAYCOLORKEYONLYONEACTIVE" },
  147.     { DDERR_PALETTEBUSY, "DDERR_PALETTEBUSY" },
  148.     { DDERR_COLORKEYNOTSET, "DDERR_COLORKEYNOTSET" },
  149.     { DDERR_SURFACEALREADYATTACHED, "DDERR_SURFACEALREADYATTACHED" },
  150.     { DDERR_SURFACEALREADYDEPENDENT, "DDERR_SURFACEALREADYDEPENDENT" },
  151.     { DDERR_SURFACEBUSY, "DDERR_SURFACEBUSY" },
  152.     { DDERR_SURFACEISOBSCURED, "DDERR_SURFACEISOBSCURED" },
  153.     { DDERR_SURFACELOST, "DDERR_SURFACELOST" },
  154.     { DDERR_SURFACENOTATTACHED, "DDERR_SURFACENOTATTACHED" },
  155.     { DDERR_TOOBIGHEIGHT, "DDERR_TOOBIGHEIGHT" },
  156.     { DDERR_TOOBIGSIZE, "DDERR_TOOBIGSIZE" },
  157.     { DDERR_TOOBIGWIDTH, "DDERR_TOOBIGWIDTH" },
  158.     { DDERR_UNSUPPORTED, "DDERR_UNSUPPORTED" },
  159.     { DDERR_UNSUPPORTEDFORMAT, "DDERR_UNSUPPORTEDFORMAT" },
  160.     { DDERR_UNSUPPORTEDMASK, "DDERR_UNSUPPORTEDMASK" },
  161.     { DDERR_VERTICALBLANKINPROGRESS, "DDERR_VERTICALBLANKINPROGRESS" },
  162.     { DDERR_WASSTILLDRAWING, "DDERR_WASSTILLDRAWING" },
  163.     { DDERR_XALIGN, "DDERR_XALIGN" },
  164.     { DDERR_INVALIDDIRECTDRAWGUID, "DDERR_INVALIDDIRECTDRAWGUID" },
  165.     { DDERR_DIRECTDRAWALREADYCREATED, "DDERR_DIRECTDRAWALREADYCREATED" },
  166.     { DDERR_NODIRECTDRAWHW, "DDERR_NODIRECTDRAWHW" },
  167.     { DDERR_PRIMARYSURFACEALREADYEXISTS, "DDERR_PRIMARYSURFACEALREADYEXISTS" },
  168.     { DDERR_NOEMULATION, "DDERR_NOEMULATION" },
  169.     { DDERR_REGIONTOOSMALL, "DDERR_REGIONTOOSMALL" },
  170.     { DDERR_CLIPPERISUSINGHWND, "DDERR_CLIPPERISUSINGHWND" },
  171.     { DDERR_NOCLIPPERATTACHED, "DDERR_NOCLIPPERATTACHED" },
  172.     { DDERR_NOHWND, "DDERR_NOHWND" },
  173.     { DDERR_HWNDSUBCLASSED, "DDERR_HWNDSUBCLASSED" },
  174.     { DDERR_HWNDALREADYSET, "DDERR_HWNDALREADYSET" },
  175.     { DDERR_NOPALETTEATTACHED, "DDERR_NOPALETTEATTACHED" },
  176.     { DDERR_NOPALETTEHW, "DDERR_NOPALETTEHW" },
  177.     { DDERR_BLTFASTCANTCLIP, "DDERR_BLTFASTCANTCLIP" },
  178.     { DDERR_NOBLTHW, "DDERR_NOBLTHW" },
  179.     { DDERR_NODDROPSHW, "DDERR_NODDROPSHW" },
  180.     { DDERR_OVERLAYNOTVISIBLE, "DDERR_OVERLAYNOTVISIBLE" },
  181.     { DDERR_NOOVERLAYDEST, "DDERR_NOOVERLAYDEST" },
  182.     { DDERR_INVALIDPOSITION, "DDERR_INVALIDPOSITION" },
  183.     { DDERR_NOTAOVERLAYSURFACE, "DDERR_NOTAOVERLAYSURFACE" },
  184.     { DDERR_EXCLUSIVEMODEALREADYSET, "DDERR_EXCLUSIVEMODEALREADYSET" },
  185.     { DDERR_NOTFLIPPABLE, "DDERR_NOTFLIPPABLE" },
  186.     { DDERR_CANTDUPLICATE, "DDERR_CANTDUPLICATE" },
  187.     { DDERR_NOTLOCKED, "DDERR_NOTLOCKED" },
  188.     { DDERR_CANTCREATEDC, "DDERR_CANTCREATEDC" },
  189.     { DDERR_NODC, "DDERR_NODC" },
  190.     { DDERR_WRONGMODE, "DDERR_WRONGMODE" },
  191.     { DDERR_IMPLICITLYCREATED, "DDERR_IMPLICITLYCREATED" },
  192. };
  193.  
  194. /*
  195.  * getErrorString
  196.  */
  197. static LPSTR getErrorString( HRESULT ddrval )
  198. {
  199.     int i;
  200.  
  201.     for( i=0;i<sizeof( elErrors )/sizeof( elErrors[0] );i++ )
  202.     {
  203.         if( ddrval == elErrors[i].rval )
  204.         {
  205.             return elErrors[i].str;
  206.         }
  207.     }
  208.     return "Unknown Error Code";
  209.  
  210.  
  211. } /* getErrorString */
  212.  
  213. /*
  214.  * LBPrintfDDRC
  215.  *
  216.  * Display a DirectDraw error code in human readable form
  217.  */
  218. void __cdecl LBPrintfDDRC( HRESULT ddrval, LPSTR fmt, ... )
  219. {
  220.     char        buff[512];
  221.  
  222.     wvsprintf( buff, fmt, (LPVOID)(&fmt+1) );
  223.     LBPrintf( "%s, rc=%ld (0x%08lx:%s)", buff, LOWORD( ddrval ),
  224.                                 ddrval, getErrorString( ddrval ) );
  225.  
  226. } /* LBPrintfDDRC */
  227.