亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sinewave.c

?? Programming Visual C++ 5th edition source code
?? C
字號:
/*------------------------------------------------------
   SINEWAVE.C -- Multimedia Windows Sine Wave Generator
                 (c) Charles Petzold, 1998
  ------------------------------------------------------*/

#include <windows.h>
#include <math.h>
#include "resource.h"

#define SAMPLE_RATE     11025
#define FREQ_MIN           20
#define FREQ_MAX         5000
#define FREQ_INIT         440
#define OUT_BUFFER_SIZE  4096
#define PI                  3.14159

BOOL CALLBACK DlgProc (HWND, UINT, WPARAM, LPARAM) ;

TCHAR szAppName [] = TEXT ("SineWave") ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     if (-1 == DialogBox (hInstance, szAppName, NULL, DlgProc))
     {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                      szAppName, MB_ICONERROR) ;
     }
     return 0 ;
}

VOID FillBuffer (PBYTE pBuffer, int iFreq)
{
     static double fAngle ;
     int           i ;

     for (i = 0 ; i < OUT_BUFFER_SIZE ; i++)
     {
          pBuffer [i] = (BYTE) (127 + 127 * sin (fAngle)) ;

          fAngle += 2 * PI * iFreq / SAMPLE_RATE ;

          if (fAngle > 2 * PI)
               fAngle -= 2 * PI ;
     }
}

BOOL CALLBACK DlgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     static BOOL         bShutOff, bClosing ;
     static HWAVEOUT     hWaveOut ;
     static HWND         hwndScroll ;
     static int          iFreq = FREQ_INIT ;
     static PBYTE        pBuffer1, pBuffer2 ;
     static PWAVEHDR     pWaveHdr1, pWaveHdr2 ;
     static WAVEFORMATEX waveformat ;
     int                 iDummy ;
     
     switch (message)
     {
     case WM_INITDIALOG:
          hwndScroll = GetDlgItem (hwnd, IDC_SCROLL) ;
          SetScrollRange (hwndScroll, SB_CTL, FREQ_MIN, FREQ_MAX, FALSE) ;
          SetScrollPos   (hwndScroll, SB_CTL, FREQ_INIT, TRUE) ;
          SetDlgItemInt  (hwnd, IDC_TEXT, FREQ_INIT, FALSE) ;
          
          return TRUE ;
          
     case WM_HSCROLL:
          switch (LOWORD (wParam))
          {
          case SB_LINELEFT:   iFreq -=  1 ;  break ;
          case SB_LINERIGHT:  iFreq +=  1 ;  break ;
          case SB_PAGELEFT:   iFreq /=  2 ;  break ;
          case SB_PAGERIGHT:  iFreq *=  2 ;  break ;
               
          case SB_THUMBTRACK:
               iFreq = HIWORD (wParam) ;
               break ;
               
          case SB_TOP:
               GetScrollRange (hwndScroll, SB_CTL, &iFreq, &iDummy) ;
               break ;
               
          case SB_BOTTOM:
               GetScrollRange (hwndScroll, SB_CTL, &iDummy, &iFreq) ;
               break ;
          }
          
          iFreq = max (FREQ_MIN, min (FREQ_MAX, iFreq)) ;
          
          SetScrollPos (hwndScroll, SB_CTL, iFreq, TRUE) ;
          SetDlgItemInt (hwnd, IDC_TEXT, iFreq, FALSE) ;
          return TRUE ;
          
     case WM_COMMAND:
          switch (LOWORD (wParam))
          {
          case IDC_ONOFF:
                    // If turning on waveform, hWaveOut is NULL
               
               if (hWaveOut == NULL)
               {
                         // Allocate memory for 2 headers and 2 buffers

                    pWaveHdr1 = malloc (sizeof (WAVEHDR)) ;
                    pWaveHdr2 = malloc (sizeof (WAVEHDR)) ;
                    pBuffer1  = malloc (OUT_BUFFER_SIZE) ;
                    pBuffer2  = malloc (OUT_BUFFER_SIZE) ;

                    if (!pWaveHdr1 || !pWaveHdr2 || !pBuffer1 || !pBuffer2)
                    {
                         if (!pWaveHdr1) free (pWaveHdr1) ;
                         if (!pWaveHdr2) free (pWaveHdr2) ;
                         if (!pBuffer1)  free (pBuffer1) ;
                         if (!pBuffer2)  free (pBuffer2) ;

                         MessageBeep (MB_ICONEXCLAMATION) ;
                         MessageBox (hwnd, TEXT ("Error allocating memory!"),
                                     szAppName, MB_ICONEXCLAMATION | MB_OK) ;
                         return TRUE ;
                    }

                         // Variable to indicate Off button pressed

                    bShutOff = FALSE ;
                         
                         // Open waveform audio for output
                         
                    waveformat.wFormatTag      = WAVE_FORMAT_PCM ;
                    waveformat.nChannels       = 1 ;
                    waveformat.nSamplesPerSec  = SAMPLE_RATE ;
                    waveformat.nAvgBytesPerSec = SAMPLE_RATE ;
                    waveformat.nBlockAlign     = 1 ;
                    waveformat.wBitsPerSample  = 8 ;
                    waveformat.cbSize          = 0 ;
                         
                    if (waveOutOpen (&hWaveOut, WAVE_MAPPER, &waveformat,
                                     (DWORD) hwnd, 0, CALLBACK_WINDOW)
                              != MMSYSERR_NOERROR)
                    {
                         free (pWaveHdr1) ;
                         free (pWaveHdr2) ;
                         free (pBuffer1) ;
                         free (pBuffer2) ;

                         hWaveOut = NULL ;
                         MessageBeep (MB_ICONEXCLAMATION) ;
                         MessageBox (hwnd, 
                              TEXT ("Error opening waveform audio device!"),
                              szAppName, MB_ICONEXCLAMATION | MB_OK) ;
                         return TRUE ;
                    }

                         // Set up headers and prepare them

                    pWaveHdr1->lpData          = pBuffer1 ;
                    pWaveHdr1->dwBufferLength  = OUT_BUFFER_SIZE ;
                    pWaveHdr1->dwBytesRecorded = 0 ;
                    pWaveHdr1->dwUser          = 0 ;
                    pWaveHdr1->dwFlags         = 0 ;
                    pWaveHdr1->dwLoops         = 1 ;
                    pWaveHdr1->lpNext          = NULL ;
                    pWaveHdr1->reserved        = 0 ;
                    
                    waveOutPrepareHeader (hWaveOut, pWaveHdr1, 
                                          sizeof (WAVEHDR)) ;

                    pWaveHdr2->lpData          = pBuffer2 ;
                    pWaveHdr2->dwBufferLength  = OUT_BUFFER_SIZE ;
                    pWaveHdr2->dwBytesRecorded = 0 ;
                    pWaveHdr2->dwUser          = 0 ;
                    pWaveHdr2->dwFlags         = 0 ;
                    pWaveHdr2->dwLoops         = 1 ;
                    pWaveHdr2->lpNext          = NULL ;
                    pWaveHdr2->reserved        = 0 ;
                    
                    waveOutPrepareHeader (hWaveOut, pWaveHdr2,
                                          sizeof (WAVEHDR)) ;
               }
                    // If turning off waveform, reset waveform audio
               else
               {
                    bShutOff = TRUE ;
                    waveOutReset (hWaveOut) ;
               }
               return TRUE ;
          }
          break ;

               // Message generated from waveOutOpen call
               
     case MM_WOM_OPEN:
          SetDlgItemText (hwnd, IDC_ONOFF, TEXT ("Turn Off")) ;

               // Send two buffers to waveform output device
                    
          FillBuffer (pBuffer1, iFreq) ;
          waveOutWrite (hWaveOut, pWaveHdr1, sizeof (WAVEHDR)) ;
                    
          FillBuffer (pBuffer2, iFreq) ;
          waveOutWrite (hWaveOut, pWaveHdr2, sizeof (WAVEHDR)) ;
          return TRUE ;

               // Message generated when a buffer is finished
                    
     case MM_WOM_DONE:
          if (bShutOff)
          {
               waveOutClose (hWaveOut) ;
               return TRUE ;
          }

               // Fill and send out a new buffer

          FillBuffer (((PWAVEHDR) lParam)->lpData, iFreq) ;
          waveOutWrite (hWaveOut, (PWAVEHDR) lParam, sizeof (WAVEHDR)) ;
          return TRUE ;
          
     case MM_WOM_CLOSE:
          waveOutUnprepareHeader (hWaveOut, pWaveHdr1, sizeof (WAVEHDR)) ;
          waveOutUnprepareHeader (hWaveOut, pWaveHdr2, sizeof (WAVEHDR)) ;

          free (pWaveHdr1) ;
          free (pWaveHdr2) ;
          free (pBuffer1) ;
          free (pBuffer2) ;

          hWaveOut = NULL ;
          SetDlgItemText (hwnd, IDC_ONOFF, TEXT ("Turn On")) ;
          
          if (bClosing)
               EndDialog (hwnd, 0) ;
          
          return TRUE ;
          
     case WM_SYSCOMMAND:
          switch (wParam)
          {
          case SC_CLOSE:
               if (hWaveOut != NULL)
               {
                    bShutOff = TRUE ;
                    bClosing = TRUE ;
                    
                    waveOutReset (hWaveOut) ;
               }
               else
                    EndDialog (hwnd, 0) ;
               
               return TRUE ;
          }
          break ;
     }
     return FALSE ;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人精品福利| 日韩免费成人网| 久久成人免费网| 亚洲欧美日韩在线不卡| 精品国产1区二区| 在线观看免费成人| 成人午夜电影久久影院| 乱中年女人伦av一区二区| 国产精品久久毛片| 久久久久国产精品麻豆| 欧美三级三级三级爽爽爽| 成人av影视在线观看| 麻豆精品精品国产自在97香蕉| 一区二区三区欧美激情| 中文字幕第一区二区| 精品欧美一区二区在线观看| 欧美精品自拍偷拍动漫精品| 99久久久无码国产精品| 成人美女视频在线观看| 国产一区二区三区观看| 日本成人超碰在线观看| 亚洲一区二区在线免费观看视频| 国产精品欧美久久久久无广告| 精品奇米国产一区二区三区| 4438x亚洲最大成人网| 欧亚洲嫩模精品一区三区| eeuss鲁一区二区三区| 国产一区二区三区av电影 | 日本网站在线观看一区二区三区| 中文成人av在线| 欧美极品xxx| 精品久久久久久久久久久久久久久久久| 日本高清视频一区二区| 99国内精品久久| 成人精品国产免费网站| 国产精品88av| 国产成人在线色| 国产91综合一区在线观看| 国产一区二区三区高清播放| 精品午夜一区二区三区在线观看| 奇米精品一区二区三区四区| 日韩国产欧美在线播放| 日韩av二区在线播放| 男女性色大片免费观看一区二区 | 国产精品亚洲成人| 国产一区二区三区免费| 国产精品1024| 风间由美一区二区三区在线观看 | 午夜精品国产更新| 香蕉久久一区二区不卡无毒影院| 亚洲永久免费av| 日韩综合小视频| 蜜臀精品久久久久久蜜臀 | 中文字幕一区免费在线观看| 国产精品情趣视频| 亚洲蜜桃精久久久久久久| 亚洲人成在线观看一区二区| 一个色综合网站| 天天影视涩香欲综合网| 蜜桃av噜噜一区二区三区小说| 狠狠狠色丁香婷婷综合久久五月| 狠狠色丁香久久婷婷综| proumb性欧美在线观看| 91影视在线播放| 欧美视频精品在线| 91精品国产综合久久精品性色| 日韩三区在线观看| 久久久亚洲精品石原莉奈| 成人欧美一区二区三区黑人麻豆 | 欧美日韩国产三级| 精品久久久久久无| 国产精品国产三级国产aⅴ中文| 亚洲欧美电影院| 青青草国产精品97视觉盛宴 | 国产九色sp调教91| 夫妻av一区二区| 欧洲精品在线观看| 日韩欧美区一区二| 日韩码欧中文字| 日韩高清一区二区| 国产成人在线视频播放| 欧美日韩另类一区| 久久亚洲欧美国产精品乐播 | 青青草91视频| av网站免费线看精品| 欧美人xxxx| 日本一区二区高清| 午夜不卡在线视频| 粉嫩av一区二区三区在线播放| 欧美日本一道本在线视频| 精品国产一二三区| 一个色在线综合| 成熟亚洲日本毛茸茸凸凹| 欧美日韩第一区日日骚| 欧美—级在线免费片| 蜜臀精品一区二区三区在线观看 | 欧美色综合天天久久综合精品| 日韩欧美区一区二| 亚洲线精品一区二区三区八戒| 国产乱国产乱300精品| 欧美美女一区二区在线观看| 久久精品一区二区三区av| 亚洲最大成人综合| 成人av网站在线观看免费| 日韩欧美色综合| 亚洲亚洲人成综合网络| 99re成人精品视频| 国产拍欧美日韩视频二区| 香蕉av福利精品导航| 色综合天天综合在线视频| 国产精品乱人伦一区二区| 久久精品国产亚洲高清剧情介绍 | 国产精品美女久久久久av爽李琼 | 久久亚洲一区二区三区明星换脸| 亚洲午夜精品在线| 99久久精品免费看国产免费软件| 国产拍欧美日韩视频二区| 久久国产人妖系列| 91麻豆精品国产91久久久| 亚洲资源中文字幕| 色综合久久中文综合久久97| 国产三级欧美三级日产三级99| 精品无人区卡一卡二卡三乱码免费卡| 在线成人小视频| 午夜亚洲国产au精品一区二区| 在线日韩国产精品| 亚洲欧美国产高清| 色婷婷亚洲一区二区三区| 成人欧美一区二区三区黑人麻豆 | 日韩欧美国产小视频| 亚洲成人av一区二区三区| 91久久人澡人人添人人爽欧美| 中文字幕永久在线不卡| 成人动漫精品一区二区| 国产精品女主播av| 97久久超碰国产精品电影| 国产精品国产三级国产专播品爱网| 欧美色区777第一页| 亚洲图片有声小说| 欧美唯美清纯偷拍| 亚洲午夜在线视频| 在线播放91灌醉迷j高跟美女 | 亚洲国产成人av网| 欧美日韩一区精品| 五月激情六月综合| 91精品国模一区二区三区| 久久se这里有精品| 精品美女一区二区| 国产一区二区三区在线观看免费视频| 精品不卡在线视频| 国产乱人伦精品一区二区在线观看 | 9久草视频在线视频精品| 国产精品久久久久永久免费观看| 99免费精品在线| 亚洲精品v日韩精品| 精品视频在线免费看| 午夜不卡av免费| 欧美精品一区二区三| 成人免费毛片app| 亚洲三级免费电影| 欧美日韩一区二区三区免费看| 丝袜国产日韩另类美女| 欧美α欧美αv大片| 国产69精品久久久久777| 亚洲综合另类小说| 欧美一区二区三区免费观看视频| 精品一区二区影视| 国产精品久久久久久久久晋中| 精品视频在线免费观看| 卡一卡二国产精品| 国产精品乱码一区二区三区软件| 色综合天天综合网天天狠天天| 五月天一区二区三区| 久久先锋影音av鲁色资源网| www.在线成人| 婷婷久久综合九色综合绿巨人 | 国产精品乱码一区二区三区软件 | 国产女主播视频一区二区| 97久久超碰国产精品电影| 男女性色大片免费观看一区二区 | 色婷婷精品大在线视频| 日韩电影免费在线观看网站| 国产调教视频一区| 欧美日韩中字一区| 懂色av一区二区三区免费看| 亚洲电影激情视频网站| 久久精品日韩一区二区三区| 色噜噜偷拍精品综合在线| 久久er99热精品一区二区| 亚洲激情成人在线| 精品少妇一区二区三区日产乱码| av激情亚洲男人天堂| 蜜桃传媒麻豆第一区在线观看| 亚洲黄色片在线观看| 久久综合久久鬼色中文字| 欧美亚洲日本国产| 成人网男人的天堂| 精东粉嫩av免费一区二区三区| 亚洲一区在线看| 亚洲欧美中日韩|