//-----------------------------------------------------------------------------
// File: PlaySound.cpp
//
// Desc: DirectSound support for how to load a wave file and play it using a
// static DirectSound buffer.
//
// Copyright (c) 1999 Microsoft Corp. All rights reserved.
//-----------------------------------------------------------------------------
#define STRICT
#include <objbase.h>
#include <initguid.h>
#include <commdlg.h>
#include <mmreg.h>
#include <dsound.h>
#include <stdio.h>
#include "inc\WaveRead.h"
#include "inc\sound.h"
FILE *debugdata1;
#define debuglog1 "gauges/dxdebug.log"
char dxdebug1[256];
//-----------------------------------------------------------------------------
// Function-prototypes
//-----------------------------------------------------------------------------
VOID LoadWaveFile( TCHAR* strFileName );
HRESULT FillBuffer(WORD);
HRESULT RestoreBuffers(WORD);
//-----------------------------------------------------------------------------
// Defines, constants, and global variables
//-----------------------------------------------------------------------------
#define SAFE_DELETE(p) { if(p) { delete (p); (p)=NULL; } }
#define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } }
LPDIRECTSOUND g_pDS ;
LPDIRECTSOUNDBUFFER g_pDSBuffer [100];
LPDIRECTSOUNDNOTIFY g_pDSNotify [100];
CWaveSoundRead* g_pWaveSoundRead [100];
DWORD g_dwBufferBytes [100];
//-----------------------------------------------------------------------------
// Name: InitDirectSound()
// Desc: Initilizes DirectSound
//-----------------------------------------------------------------------------
extern "C" HRESULT InitDirectSound(void)
{
HRESULT hr;
LPDIRECTSOUNDBUFFER pDSBSecondary = NULL;
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debuglog1,"a");
fprintf(debugdata1,"Entering InitDirectSound().\n");
fclose(debugdata1);
}
// Create IDirectSound using the primary sound device
if( FAILED( hr = DirectSoundCreate( NULL, &g_pDS , NULL ) ) )
{
debugdata1 = fopen(debuglog1,"r");
return hr;
}
else
{
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debuglog1,"a");
fprintf(debugdata1,"DirectSoundCreate.... succeeded.\n");
fclose(debugdata1);
}
}
// Set coop level to DSSCL_PRIORITY
if( FAILED( hr = g_pDS->SetCooperativeLevel(FindWindow ("FS98MAIN",NULL), DSSCL_NORMAL ) ) )
{
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debuglog1,"a");
fprintf(debugdata1,"\n");
fprintf(debugdata1,"Looking for FS main window.... FAILED.\n");
fprintf(debugdata1,"Initialise DirectSound aborted.\n");
fprintf(debugdata1,"(Possibly because it already exists).\n");
fclose(debugdata1);
}
return hr;
}
else
{
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debuglog1,"a");
fprintf(debugdata1,"Looking for FS main window.... succeeded.\n");
fprintf(debugdata1,"Setting DirectSound co-operation level to Priority.\n");
fclose(debugdata1);
}
}
// Get the primary buffer
// Set primary buffer format to 22kHz and 16-bit output.
WAVEFORMATEX wfx;
ZeroMemory( &wfx, sizeof(WAVEFORMATEX) );
wfx.wFormatTag = WAVE_FORMAT_PCM;
wfx.nChannels = NCHANNELS;
wfx.nSamplesPerSec = FREQ;
wfx.wBitsPerSample = NBITS;
wfx.nBlockAlign = wfx.wBitsPerSample / 8 * wfx.nChannels;
wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign;
DSBUFFERDESC dsbd;
ZeroMemory( &dsbd, sizeof(DSBUFFERDESC) );
dsbd.dwSize = sizeof(DSBUFFERDESC);
dsbd.dwFlags = DSBCAPS_LOCSOFTWARE ;
dsbd.dwBufferBytes = DSBSIZE_MAX;
dsbd.lpwfxFormat = &wfx;
if( FAILED( hr = g_pDS->CreateSoundBuffer( &dsbd, &pDSBSecondary, NULL ) ) )
{
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debuglog1,"a");
fprintf(debugdata1,"Creating primary DirectSound buffer.... FAILED.\n");
fprintf(debugdata1,"(Possibly because it already exists).\n");
fclose(debugdata1);
}
return hr;
}
else
{
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debuglog1,"a");
fprintf(debugdata1,"Creating primary DirectSound buffer.... succeeded.\n");
fclose(debugdata1);
}
}
SAFE_RELEASE( pDSBSecondary );
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: Freebuffers()
// Desc: Releases Buffers
//-----------------------------------------------------------------------------
extern "C" HRESULT FreeBuffers(WORD BufferN)
{
char buf[4];
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debuglog1,"a");
fprintf(debugdata1,"Entering FreeBuffers().\n");
fclose(debugdata1);
}
SAFE_DELETE( g_pWaveSoundRead [BufferN]);
// Release DirectSound interfaces
SAFE_RELEASE( g_pDSBuffer [BufferN]);
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debuglog1,"a");
strcpy(dxdebug1,"\0");
strcpy(dxdebug1,"Sound buffer ");
strcat(dxdebug1,_itoa(BufferN,buf,10));
strcat(dxdebug1," released.\n");
fprintf(debugdata1,dxdebug1);
fclose(debugdata1);
}
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: FreeDirectSound()
// Desc: Releases DirectSound
//-----------------------------------------------------------------------------
extern "C" HRESULT FreeDirectSound(void)
{
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debuglog1,"a");
fprintf(debugdata1,"Entering FreeDirectSound().\n");
fclose(debugdata1);
}
SAFE_RELEASE( g_pDS );
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debuglog1,"a");
fprintf(debugdata1,"\n");
fprintf(debugdata1,"------\n");
fprintf(debugdata1,"FS shutdown or change of flight detected.\n");
fprintf(debugdata1,"DirectSound released.\n");
fprintf(debugdata1,"------\n");
fclose(debugdata1);
}
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: CreateStaticBuffer()
// Desc: Creates a wave file, sound buffer and notification events
//-----------------------------------------------------------------------------
HRESULT CreateStaticBuffer( WORD BufferN,TCHAR* strFileName )
{
HRESULT hr; char buf[10];
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debuglog1,"a");
fprintf(debugdata1,"Entering CreateStaticBuffer().\n");
fclose(debugdata1);
}
// Free any previous globals
SAFE_DELETE( g_pWaveSoundRead [BufferN]);
SAFE_RELEASE( g_pDSBuffer [BufferN]);
// Create a new wave file class
g_pWaveSoundRead [BufferN]= new CWaveSoundRead();
// Load the wave file
if( FAILED( g_pWaveSoundRead[BufferN]->Open( strFileName ) ) )
{
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debuglog1,"a");
fprintf(debugdata1,"Loading wavfile.... FAILED.\n");
fprintf(debugdata1,"Play command aborted.\n");
fclose(debugdata1);
}
return E_FAIL;
}
else
{
debugdata1 = fopen(debuglog1,"r");
if(debugdata1)
{
fclose(debugdata1);
debugdata1 = fopen(debugl
没有合适的资源?快使用搜索试试~ 我知道了~
AAR_FSX.zip_Refuel_aar4738_fsx
共42个文件
cpp:10个
h:8个
bmp:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 200 浏览量
2022-09-24
19:32:00
上传
评论
收藏 6.83MB ZIP 举报
温馨提示
Air to Air refuel in Microsoft Flight Simulator
资源推荐
资源详情
资源评论
收起资源包目录
AAR_FSX.zip (42个子文件)
AAR
simconnect_var.h 954B
UpgradeLog.XML 1KB
SDK.FlightInfo.xml 446B
res
AAR-DROGUE_BUTTON.bmp 19KB
prevue.jpg 23KB
AAR-RED_BUTTON.bmp 9KB
AAR-BACKGROUND.bmp 239KB
verB3-2.jpg 53KB
verB3-1.jpg 39KB
verB3.jpg 38KB
ver1.0.jpg 14KB
AAR-GREEN_BUTTON.bmp 9KB
AAR-BACKGROUND - Copy.bmp 239KB
Thumbs.db 61KB
AAR-BOOM_BUTTON.bmp 19KB
SDK.FlightMap.bmp 85KB
SDK.Whiskey.cpp 2KB
Cessna_Panel_1024_Blank.bmp 542KB
inc
waveread.h 1KB
SimConnect.h 37KB
sound.h 21KB
dfdsnd.h 496B
SDK.Control_Surfaces.cpp 2KB
SDK.Attitude.cpp 2KB
SDK.cpp 10KB
waveread.cpp 9KB
SimConnect.lib 23KB
SDKSample.vcproj 5KB
SDK.FlightMap.cpp 12KB
makefile 2KB
AAR.ncb 11.64MB
simconnect_util.h 6KB
resource.h 818B
SDK.h 1KB
AAR.sln 882B
SDK.Fuel_Selector.cpp 3KB
SDK.rc 3KB
SDK.Temperature.cpp 3KB
Sound.cpp 21KB
PANEL.CFG 755B
SDK.Fuel.cpp 2KB
Print Screen.ncb 8.22MB
共 42 条
- 1
资源评论
御道御小黑
- 粉丝: 61
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功