home *** CD-ROM | disk | FTP | other *** search
/ The Mother of All Windows Books / CD-MOM.iso / cd_mom / newsletr / vbz / vbz1-3 / dll_src.exe / MSGMUSIC.C < prev    next >
C/C++ Source or Header  |  1992-02-17  |  2KB  |  66 lines

  1. //MSGMUSIC.C
  2. //Main module for MSGMUSIC.DLL - replacements for:
  3. //MessageBeep and MessageBox
  4. //by Jonathan Zuck
  5. //Copyright 1992 Jonathan Zuck & The Windows Tech Journal
  6.  
  7. #include <windows.h>
  8.  
  9. #define NSOUNDS 5
  10. #define MAXNOTES 7
  11.  
  12. int FREQ [NSOUNDS][MAXNOTES * 2 + 2] =
  13.     {
  14.         //This is my lookup table (0 based)
  15.         //{Repeat, nNotes, Freq, Duration, Freq, Duration... etc.}
  16.         {1, 2, 750, 15, 600, 25},    //Normal (Doorbell)
  17.         {3, 2, 900, 15, 700, 15},    //STOP (Claxon)
  18.                                     //Question ("Huh?!")
  19.         {1, 7, 220, 1, 330, 1, 440, 1, 660, 1, 880, 1, 1319, 1, 1760, 1},
  20.         {1, 2, 75, 15, 45, 20},        //Exclamation ("Oh, oh!")
  21.         {10, 2, 600, 1, 800, 1},    //Info (Phone)
  22.     };
  23.  
  24. int FAR pascal
  25.      LibMain(HANDLE hModule, WORD wDataSeg, WORD cbHeapSize, LPSTR lpszCmdLine)
  26. {
  27.     if (cbHeapSize > 0)
  28.         UnlockData(0);
  29.     return (1);
  30. }
  31.  
  32. void El2Queue (WORD El) //Send notes from corresponding array element
  33. {
  34.     int c, n, nDur;
  35.     long lFreq;
  36.  
  37.     OpenSound ();
  38.     for (c = 1; c <= FREQ[El][0]; ++c)
  39.     for (n = 2; n <= (FREQ[El][1] * 2); n=n+2)
  40.     {
  41.         lFreq = MAKELONG (0, FREQ[El][n]);
  42.         nDur = FREQ[El][n+1] * 10;
  43.         SetVoiceSound (1, lFreq, nDur);
  44.         StartSound ();
  45.     }
  46. }
  47.  
  48. void FAR pascal MusicBeep (WORD wType)
  49. {
  50.     El2Queue (wType / 16);
  51.     WaitSoundState (S_QUEUEEMPTY);
  52.     CloseSound ();
  53.  
  54. }
  55.  
  56.  
  57. int FAR pascal
  58.     MusicBox (HWND hWndParent, LPSTR lpText, LPSTR lpCaption, WORD wType)
  59. {
  60.     int Result;
  61.  
  62.     El2Queue (wType / 16);
  63.     Result = MessageBox (hWndParent, lpText, lpCaption, wType);
  64.     CloseSound ();
  65.     return (Result);
  66. }