home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / win_lrn / sound / setvcque.c < prev    next >
C/C++ Source or Header  |  1988-08-10  |  4KB  |  106 lines

  1. /*
  2.  *  SetVoiceQueueSize
  3.  *  setvcque
  4.  *
  5.  *  SetVoiceQueueSize(nVoice,nBytes) allocates nBytes bytes for the voice
  6.  *  queue specified by nVoice.    If the queue size is not set, the default
  7.  *  is 192 bytes, room for about 32 notes.  All voice queues are locked in
  8.  *  memory.  The queues cannot be set while music is playing.
  9.  *
  10.  *  This program demonstrates the use of the function SetVoiceQueueSize.
  11.  *  As shown below, OpenSound must be invoked before SetVoiceQueueSize can
  12.  *  be called.    SetVoiceQueueSize returns one of three possible values -
  13.  *  one success value and two error values.
  14.  *
  15.  */
  16.  
  17. #include "windows.h"
  18.  
  19. /* Procedure called when the application is loaded for the first time */
  20. BOOL WinInit( hInstance )
  21. HANDLE hInstance;
  22. {
  23.     PWNDCLASS   pClass;
  24.  
  25.     pClass = (PWNDCLASS)LocalAlloc( LPTR, sizeof(WNDCLASS) );
  26.  
  27.     /* registering the parent window class */
  28.     pClass->hCursor        = LoadCursor( NULL, IDC_ARROW );
  29.     pClass->lpszMenuName   = (LPSTR)NULL;
  30.     pClass->lpszClassName  = (LPSTR)"Window";
  31.     pClass->hbrBackground  = (HBRUSH)GetStockObject( WHITE_BRUSH );
  32.     pClass->hInstance      = hInstance;
  33.     pClass->style          = CS_HREDRAW | CS_VREDRAW;
  34.     pClass->lpfnWndProc    = DefWindowProc;
  35.  
  36.     if (!RegisterClass( (LPWNDCLASS)pClass ) )
  37.         /* Initialization failed.
  38.          * Windows will automatically deallocate all allocated memory.
  39.          */
  40.         return FALSE;
  41.  
  42.     LocalFree( (HANDLE) pClass );
  43.     return TRUE;        /* Initialization succeeded */
  44. }
  45.  
  46. int PASCAL WinMain( hInstance, hPrevInstance, lpszCmdLine, cmdShow )
  47. HANDLE hInstance, hPrevInstance;
  48. LPSTR lpszCmdLine;
  49. int cmdShow;
  50. {
  51.     HWND  hWnd;             /* Handle to the parent window            */
  52.     short nResult;          /* Returned by SetVoiceQueueSize function */
  53.     short nVoice;           /* Specifies the voice queue              */
  54.     short nVoices;          /* Specifies the number of voices available */
  55.     short nBytes;           /* Specifies the number of bytes to be
  56.                              * allocated to the voice queue           */
  57.    
  58.     WinInit (hInstance);
  59.  
  60.     hWnd = CreateWindow((LPSTR)"Window",
  61.                         (LPSTR)"SetVoiceQueueSize",
  62.                         WS_TILEDWINDOW,
  63.                         20,20,400,200,
  64.                         (HWND)NULL,        /* no parent */
  65.                         (HMENU)NULL,       /* use class menu */
  66.                         (HANDLE)hInstance, /* handle to window instance */
  67.                         (LPSTR)NULL        /* no params to pass on */
  68.                        );
  69.  
  70.     /* Make window visible according to the way the application is activated */
  71.     ShowWindow( hWnd, cmdShow );
  72.     UpdateWindow( hWnd );
  73.     /*********************************************************************/
  74.  
  75.     nVoices = OpenSound ();   /* Must open access to the play device before
  76.                    * SetVoiceQueueSize can be invoked */
  77.  
  78.     /* Allocate nBytes for the voice queue specified by nVoice */
  79.     nVoice = 1;
  80.     nBytes = 300;     /* Default is 192 bytes, room for about 32 notes */
  81.     nResult = SetVoiceQueueSize (nVoice, nBytes);
  82.        /* The return value is zero if the function is successful.  On error
  83.         * it is one of the following:
  84.         *        S_SEROFM    Out of memory
  85.         *        S_SERMACT    Music active     */
  86.  
  87.     CloseSound(); /* CloseSound must be invoked to allow other applications
  88.            * access to the play device */
  89.  
  90.     /*********************************************************************/
  91.     /* return code for SetVoiceQueueSize routine */
  92.     if (nResult == 0)                           /* Function is successful */
  93.       {  MessageBox (hWnd, (LPSTR)"300 bytes are allocated to voice queue number one",
  94.                     (LPSTR)"Done", MB_OK);
  95.       }
  96.     else if (nResult == S_SEROFM)     /* If nResult == S_SERTOFM then out of memory */
  97.       {  MessageBox (hWnd, (LPSTR)"Out of memory",
  98.                     (LPSTR)NULL, MB_OK);
  99.       }
  100.     else
  101.       {  MessageBox (hWnd, (LPSTR)"Music active", /* If nResult = S_SERMACT then music active */
  102.                     (LPSTR)NULL, MB_OK);
  103.       }
  104.     return 0;
  105. }
  106.