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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? media.cpp

?? MDF監控源碼2
?? CPP
字號:
// Media.cpp: implementation of the CMedia class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "mdf.h"
#include "Media.h"
#include <shlwapi.h>

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


 #define WIN32_LEAN_AND_MEAN   // Say No to MFC
 #include <windows.h>
 #include <Mmsystem.h>
#include ".\media.h"
//#include "RunTimeLog.cpp"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
extern CMDFApp theApp ;

//##ModelId=465286A0012A
CMedia::CMedia()
{
	m_bIsFormatSet = FALSE ;
	m_bPlay = FALSE ;
	pData = NULL ;
	m_strAddr.Empty() ;
	m_nPort = 0 ;
	m_hWnd = NULL ;
	m_nLoop = 1 ;
	char cPath[MAX_PATH];
	DWORD dwLen = GetCurrentDirectory(MAX_PATH,cPath);
	cPath[dwLen] = '\0';
	m_path.Format("%s\\",cPath);
}

//##ModelId=465286A00138
CMedia::~CMedia()
{

}

//##ModelId=465286A0011A
int CMedia::Open(CString strFileName,HWND hWnd)//打開并播放某語音
{
	CString strTip ;
	DWORD dwLen,dwCount ;
	CString strTemp ;
	char buf[10] ;

	m_hFile = CreateFile( strFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	//讀文件標志
	ReadFile( m_hFile , buf, 4, &dwCount, NULL );
	buf[dwCount] = '\0' ;
	strTemp = buf ;
	SetFilePointer( m_hFile, 4, NULL, FILE_CURRENT);
	//讀文件類型
	ReadFile( m_hFile , buf, 4, &dwCount, NULL );
	buf[dwCount] = '\0' ;
	strTemp += buf ;
	SetFilePointer( m_hFile, 4, NULL, FILE_CURRENT);
	//讀取WAVEFORMATEX長度
	ReadFile( m_hFile , &dwLen, 4, &dwCount, NULL );
	ReadFile( m_hFile , &waveformat, dwLen, &dwCount, NULL );

	//讀取data標志 
	ReadFile( m_hFile , buf, 4, &dwCount, NULL );
	buf[dwCount] = '\0' ;
	strTemp += buf ;
	if( strTemp.Find("RIFF") < 0 )
	{
		strTip.Format("異常:%s 錯誤文件格式,請檢查是否RIFF格式",strFileName) ;
		theApp.OutPut(strTip) ;
		return -1 ;
	}
	else if( strTemp.Find("WAVE") < 0 )
	{
		strTip.Format("異常:s 錯誤文件類型,請檢查是否WAVE文件",strFileName) ;
		theApp.OutPut(strTip) ;
		return -1 ;
	}
	else if( strTemp.Find("data") < 0 )
	{
		if( strTemp.Find("fact") > 0 )
		{
			SetFilePointer( m_hFile, 4, NULL, FILE_CURRENT);
		}
		else
		{
			strTip.Format("異常:%s 找不到data/fact字段",strFileName) ;
			theApp.OutPut(strTip) ;
			return -1 ;
		}
	}

	ReadFile( m_hFile , &dwLen, 4, &dwCount, NULL );
	dwDataLength = dwLen ;
	pData = new char[dwLen] ;
	ReadFile( m_hFile , pData, dwLen, &dwCount, NULL );


	//播放語音
	if (MMSYSERR_NOERROR  ==  waveOutOpen(&hWaveOut,WAVE_MAPPER,&waveformat,(DWORD)hWnd,NULL,CALLBACK_WINDOW))
	{
		//AfxMessageBox("Audio output erro") ;
		
		
		return m_bPlay = TRUE;
	}else
	{
		strTip.Format("異常:%s Audio output erro",strFileName) ;
		theApp.WriteTxtLog(strTip);
		return m_bPlay = FALSE;
	}
}

//##ModelId=465286A00119
int CMedia::OnOpen()
{
	CString strTip;	

	TRACE0("程序:調用 CMedia::OnOpen() ")  ;			//%%%
	m_pWaveHdr.lpData          = (LPTSTR)pData ;
	m_pWaveHdr.dwBufferLength  = dwDataLength ;			//CMedia 成員變量
	m_pWaveHdr.dwBytesRecorded = 0 ;
	m_pWaveHdr.dwUser          = 0 ;
	m_pWaveHdr.dwFlags         = WHDR_BEGINLOOP | WHDR_ENDLOOP ;
	m_pWaveHdr.dwLoops         = (DWORD)VOICE_LOOP ;
	m_pWaveHdr.lpNext          = NULL ;
	m_pWaveHdr.reserved        = 0 ;
	
	try
	{
		if(m_bPlay == TRUE)
		{
			waveOutPrepareHeader (hWaveOut, &m_pWaveHdr, sizeof (WAVEHDR)) ;
			
			waveOutWrite (hWaveOut, &m_pWaveHdr , sizeof (WAVEHDR)) ;
			waveOutPause(hWaveOut);
			waveOutRestart(hWaveOut);
			return 0 ;
		}
		else
			return -1 ;
	}catch (_com_error e)
	{
		strTip.Format("播放聲音時發生錯誤:%d:%s",e.Error,e.Description)	;
		theApp.WriteTxtLog(strTip);
		return -1;
	}

}

//##ModelId=465286A0010C
int CMedia::OnClose()
{
	CString strTip ;
	if (m_bPlay)
	{
		
		waveOutUnprepareHeader (hWaveOut, &m_pWaveHdr, sizeof (WAVEHDR)) ;
		waveOutClose (hWaveOut) ;
		strTip.Format("程序:電話語音播放循環 結束",m_nLoop) ;
		
	}
	m_bPlay = FALSE;
	PostMessage(m_hWnd,WM_VOICE_CLOSE,NULL,NULL);
	return 0 ;
}

//##ModelId=465286A0010B
int CMedia::Free()
{
	m_pWaveHdr.lpData          = NULL ;
	m_pWaveHdr.dwBufferLength  = 0 ;
	m_pWaveHdr.dwBytesRecorded = 0 ;
	m_pWaveHdr.dwUser          = 0 ;
	m_pWaveHdr.dwFlags         = 0 ;
	m_pWaveHdr.dwLoops         = 0 ;
	m_pWaveHdr.lpNext          = NULL ;
	m_pWaveHdr.reserved        = 0 ;
	m_bIsFormatSet = FALSE ;
	delete pData ;
	pData = NULL ;
	//TRACE0("程序:調用 CMedia::Free() ") ;
	return 0 ;
}

//##ModelId=465286A000FE
int CMedia::AddVoice(CString strFName,int nType)
{
	CString strName ;
	if( nType == VOICE_NUM ) //用于模塊地址
	{
		if( strFName.GetLength() == 1 )
		{
			strName.Format("%swav\\CMFW%s.wav",m_path,strFName) ;
			AddFile(strName) ;
		}else if (strFName.GetLength() <= 2 && !strFName.IsEmpty() ) 
		{
			strName.Format("%swav\\CMFW%s.wav",m_path,strFName.Left(1)) ;
			AddFile(strName) ;
			strFName.Delete(0,1) ;
			strName.Format("%swav\\CMFW%s.wav",m_path,strFName.Left(1)) ;
			AddFile(strName) ;
		}
	}
	else
		AddFile(strFName) ;
	return 0 ;
}

//##ModelId=465286A000FC
int CMedia::StartVoice(HWND hWnd)
{
	CString strTip ;
	if( !m_bIsFormatSet )
		return -1 ;

	TRACE0("程序:CMedia::StartVoice() 啟動語音播放") ;//%%%



	if (MMSYSERR_NOERROR  ==  waveOutOpen(&hWaveOut,WAVE_MAPPER,&waveformat,(DWORD)hWnd,NULL,CALLBACK_WINDOW))
	{
		strTip= "異常:語音無法播放" ;
		//theApp.OutPut(strTip) ;
		m_bPlay = TRUE ;
		return TRUE ;
	}else
	{
		return m_bPlay = FALSE ;

	}

	//OnOpen();

	//播放語音
	return 0 ;
}

//##ModelId=465286A000FA
int CMedia::AddVoice(int nNum)//數字的語音閱讀
{
	CString strName,strTemp ;
	int nTemp ;

	if( nNum < 1000 ) //暫時只播放1000以下的數據(不含1000)
	{
		if( nTemp = nNum/100 > 0 )
		{
			strName.Format( "%swav\\CMFW%d.wav", m_path,nTemp ) ;
			AddFile(strName) ;
			strTemp.Format("%swav\\CMFW100.wav",m_path) ;
			AddFile(strTemp) ;
		}
		if( (nTemp = (nNum%100)/10) > 0 )
		{
			strName.Format( "%swav\\CMFW%d.wav", m_path, nTemp ) ;
			AddFile(strName) ;
			strTemp.Format("%swav\\CMFW10.wav", m_path) ;
			AddFile(strTemp) ;
		}		
		if( (nTemp = (nNum%10)) >0 )
		{
			strName.Format( "%swav\\CMFW%d.wav", m_path, nTemp ) ;
			AddFile(strName) ;
		}
	}
	
	return 0 ;
}

//##ModelId=465286A000EB
int CMedia::AddFile(CString strPath)
{
	DWORD dwLen,dwCount ;
	CString strTemp,strTip ;

	char* pBuf ;
	char* pTemp ;
	char buf[10] ;

	try
	{
		//strTip.Format("程序:CMedia::AddFile() 添加語音文件:%s ",strPath) ; //%%%
		//TRACE0(strTip) ;
		
		if (!PathFileExists(strPath.GetBuffer()))
		{
			return -1;
		}
		
		m_hFile = CreateFile( strPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
		//讀文件標志
		if(m_hFile == INVALID_HANDLE_VALUE ) 
		{
			strTip.Format("讀取語音文件:%s 出錯",strPath) ;	
			TRACE0(strTip) ;
			return -1 ;
		}

		ReadFile( m_hFile , buf, 4, &dwCount, NULL );
		buf[dwCount] = '\0' ;

		if ( strstr("RIFF",buf) == NULL || dwCount < 4 )
		{
			strTip.Format("%s 錯誤文件格式 ,請檢查是否RIFF格式",strPath) ;
			TRACE0(strTip) ;
			return -1 ;
		}

		SetFilePointer( m_hFile, 4, NULL, FILE_CURRENT) ;
		//讀文件類型
		ReadFile( m_hFile , buf, 4, &dwCount, NULL ) ;
		buf[dwCount] = '\0' ;
		if( strstr("WAVE",buf) == NULL || dwCount < 0 )
		{
			strTip.Format("%s 錯誤文件類型,請檢查是否WAVE文件",strPath) ;
			TRACE0(strTip) ;
			return -1 ;
		}
		//strTemp += buf ;
		SetFilePointer( m_hFile, 4, NULL, FILE_CURRENT) ;
		//讀取WAVEFORMATEX長度
		ReadFile( m_hFile , &dwLen, 4, &dwCount, NULL ) ;
		ReadFile( m_hFile , &waveformat, dwLen, &dwCount, NULL ) ;
		//讀取data標志
		ReadFile( m_hFile , buf, 4, &dwCount, NULL ) ;
		buf[dwCount] = '\0' ;
		if( strstr("data",buf) == NULL ) 
		{
			if( strstr("fact",buf) == NULL )
			{
				strTip.Format("%s 找不到data/fact字段",strPath) ;
				TRACE0(strTip) ;
				return -1 ;
			}
			else
				SetFilePointer( m_hFile, 4, NULL, FILE_CURRENT) ;
		}

		if( m_bIsFormatSet != TRUE )
			m_bIsFormatSet = TRUE ;
		//讀wave文件長度
		ReadFile( m_hFile , &dwLen, 4, &dwCount, NULL ) ;
		pBuf = new char[dwLen] ;
		ReadFile( m_hFile , pBuf, dwLen, &dwCount, NULL ) ;
		//設置語音緩存區
		if( pData == NULL )
		{
			dwDataLength = dwLen ;
			pData = new char[dwLen] ;
			memcpy(pData,pBuf,dwLen) ;
			delete pBuf ;
		}
		else
		{
			//dwDataLength += dwLen ;
			pTemp = pData ;
			int i = sizeof(pTemp) ;
			pData = new char[dwDataLength+dwLen] ;
			memcpy(pData,pTemp,dwDataLength) ;
			memcpy(pData+dwDataLength,pBuf,dwLen) ;
			dwDataLength += dwLen ;
			delete pTemp ;
			delete pBuf ;
		}
		CloseHandle(m_hFile) ;
		m_hFile = NULL ;
		return 0 ;
	}
	catch(_com_error e)
	{
		strTip.Format("異常:讀取語音文件 %s 發生未知異常:%s",strPath, (LPCSTR)e.Description()) ;
		TRACE0(strTip) ;
		return -1 ;
	}
}

//##ModelId=465286A000EA
int CMedia::CloseVoice()
{
	TRACE0("程序:調用語音關閉函數 CMedia::CloseVoice()") ;


	if(m_bPlay)
	{
		TRACE0("程序:調用 waveOutReset() ") ;
		m_nLoop = VOICE_LOOP ;
		waveOutReset(hWaveOut) ;
	}
	return 0 ;
}

//##ModelId=465286A000DE
int CMedia::AlarmVoice()
{
	CString strTemp,strTip ;
	try
	{
		if( m_bPlay )
		{
			TRACE0("程序:語音播放中...無發AlarmVoice()!") ;
			return -1 ;
		}
		strTip = "程序:語音告警!CMedia::AlarmVoice() 調用" ; //%%%
		TRACE0(strTip) ;

		//strTemp.Format("%swav\\第.wav",m_path) ;
		//AddVoice(strTemp,VOICE_FILE) ;
		AddVoice(m_strAddr,VOICE_NUM) ;
		strTemp.Format("%swav\\號.wav",m_path) ;
		AddVoice(strTemp,VOICE_FILE) ;
		strTemp.Format("%swav\\設備.wav",m_path) ;
		AddVoice(strTemp,VOICE_FILE) ;
		strTemp.Format("%swav\\第.wav",m_path) ;
		AddVoice(strTemp,VOICE_FILE) ;
		if (m_nPort <= 16)
		{
			AddVoice(m_nPort) ;
			strTemp.Format("%swav\\列.wav",m_path) ;
			AddVoice(strTemp,VOICE_FILE) ;

		}
		else if (m_nPort > 16 && m_nPort <= 24)
		{
			AddVoice(m_nPort - 16) ;
			strTemp.Format("%swav\\外接.wav",m_path) ;
			AddVoice(strTemp,VOICE_FILE) ;

		}
		else if (m_nPort > 24 && m_nPort <= 40)
		{
			AddVoice(m_nPort - 24) ;
			strTemp.Format("%swav\\列.wav",m_path) ;
			AddVoice(strTemp,VOICE_FILE) ;
			strTemp.Format("%swav\\工頻.wav",m_path) ;
			AddVoice(strTemp,VOICE_FILE) ;

		}

		strTemp.Format("%swav\\CMFWALARM.wav",m_path);
		AddVoice(strTemp,VOICE_FILE) ;
		strTemp.Format("%swav\\請速派人支援.wav",m_path);
		AddVoice(strTemp,VOICE_FILE) ;

		StartVoice(m_hWnd) ;
	}
	catch(_com_error e)
	{
		strTip.Format("異常:語音告警 發生未知異常:%s", (LPCSTR)e.Description()) ;
		theApp.WriteTxtLog(strTip) ;
		return -1 ;
	}
	return 0 ;
}

//##ModelId=465286A000DA
int CMedia::SetVoice(CString strAddr, int nPort, HWND hWnd)
{
	m_strAddr = strAddr ;
	m_nPort = nPort ;
	m_hWnd = hWnd ;
	m_nLoop = 1 ;
	return 0 ;
}

//##ModelId=465286A001C5
int CMedia::PlayWaveFile(CString strFile)
{
	if (strFile.GetLength() > 0)
		PlaySound(strFile.GetBuffer(),NULL ,SND_ASYNC | SND_FILENAME  );

	return 0;
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧美在线| 亚洲国产精品欧美一二99| 一区二区三区四区在线免费观看| 日韩有码一区二区三区| 成人黄动漫网站免费app| 欧美一区二区三区在| 亚洲欧美一区二区三区久本道91 | 韩国三级在线一区| 91久久精品一区二区三| 国产欧美日韩另类一区| 日本亚洲一区二区| 欧美在线观看一区| 亚洲日本在线观看| 国产成人av一区二区三区在线| 欧美一区午夜精品| 三级一区在线视频先锋| 在线亚洲一区观看| 亚洲精选视频在线| 91视视频在线观看入口直接观看www | 麻豆国产欧美一区二区三区| 欧美日韩国产精品成人| 亚洲精品国产a| 色婷婷av一区| 亚洲男人的天堂在线aⅴ视频| 国产宾馆实践打屁股91| 国产亚洲综合在线| 国产精品一区二区男女羞羞无遮挡| 91精品国产福利| 日韩av网站在线观看| 欧美日韩成人激情| 日韩有码一区二区三区| 91精品国产一区二区| 日本亚洲一区二区| 日韩欧美国产一区二区在线播放| 丝袜诱惑亚洲看片| 欧美电影免费提供在线观看| 蜜臀精品久久久久久蜜臀| 91麻豆精品国产91久久久久久久久| 天天综合日日夜夜精品| 日韩三级在线免费观看| 久久99精品国产91久久来源| 亚洲精品在线免费观看视频| 国产在线精品国自产拍免费| 久久伊人中文字幕| 成人免费黄色大片| 亚洲女同一区二区| 欧美日韩综合一区| 琪琪一区二区三区| 久久影音资源网| eeuss鲁一区二区三区| 亚洲女与黑人做爰| 欧美日韩国产综合视频在线观看| 日韩电影一区二区三区四区| 欧美岛国在线观看| 成人激情文学综合网| 亚洲欧美乱综合| 日韩丝袜情趣美女图片| 高清成人免费视频| 亚洲亚洲精品在线观看| 精品久久久久久久久久久久久久久 | 精品99久久久久久| 97se狠狠狠综合亚洲狠狠| 亚洲精品成人悠悠色影视| 91精品国产综合久久精品图片| 久久国产精品99久久久久久老狼| 欧美激情一区二区三区四区| 色菇凉天天综合网| 美脚の诱脚舐め脚责91| 亚洲欧洲成人自拍| 欧美一二三区精品| 91一区二区在线| 老汉av免费一区二区三区| 亚洲欧洲国产日韩| 日韩欧美色综合网站| 色综合天天综合在线视频| 麻豆成人综合网| 亚洲蜜桃精久久久久久久| 精品日产卡一卡二卡麻豆| 一本久道久久综合中文字幕| 久久国产精品露脸对白| 亚洲一区二区综合| 国产人成一区二区三区影院| 欧美精品vⅰdeose4hd| 成人不卡免费av| 久久精品国产网站| 亚洲福利一区二区三区| 欧美国产精品一区| 精品国产乱码91久久久久久网站| 欧美性受xxxx| 国产成人免费视频网站高清观看视频 | av在线播放成人| 黄色日韩三级电影| 日本人妖一区二区| 亚洲综合自拍偷拍| 中文欧美字幕免费| 精品国产乱码久久久久久图片| 久久精品一区四区| 在线成人免费视频| 91福利小视频| 成年人网站91| 丁香一区二区三区| 国产美女精品人人做人人爽| 美女一区二区三区在线观看| 天堂午夜影视日韩欧美一区二区| 亚洲免费观看高清完整版在线观看| 国产清纯美女被跳蛋高潮一区二区久久w | 成人av网站免费| 国产成人精品综合在线观看| 久久99热这里只有精品| 日本欧美一区二区在线观看| 日韩福利视频网| 亚洲电影中文字幕在线观看| 亚洲一区中文日韩| 亚洲一区免费在线观看| 亚洲成人免费在线观看| 一区二区三区日韩精品| 亚洲一区免费在线观看| 亚洲高清不卡在线| 日本欧美大码aⅴ在线播放| 日韩福利视频网| 精品一区二区三区影院在线午夜| 免费美女久久99| 激情综合网最新| 国产精品亚洲人在线观看| 国产一区二区调教| 风间由美中文字幕在线看视频国产欧美| 国产精品69毛片高清亚洲| 国产精品1区2区| 99精品国产一区二区三区不卡| 99久久精品国产毛片| 欧美探花视频资源| 欧美一区二区免费观在线| 久久久夜色精品亚洲| 日本一区二区免费在线| 亚洲日本va午夜在线影院| 一区二区在线观看视频在线观看| 亚洲成在线观看| 狠狠色丁香久久婷婷综| 成人av资源在线观看| 日本道色综合久久| 日韩免费高清电影| 国产精品丝袜一区| 一级中文字幕一区二区| 麻豆成人免费电影| 成人黄色小视频| 7777精品伊人久久久大香线蕉的 | 激情五月婷婷综合网| 福利一区二区在线| 欧洲视频一区二区| 精品国产百合女同互慰| 亚洲精品视频免费看| 麻豆91在线播放| 91免费小视频| 精品久久久久久久久久久院品网 | 国产欧美一区视频| 亚洲国产婷婷综合在线精品| 久久疯狂做爰流白浆xx| 色综合欧美在线| 精品国产亚洲在线| 亚洲高清不卡在线| 成人免费视频一区二区| 7777精品久久久大香线蕉| 欧美韩国日本不卡| 欧美a一区二区| 色哟哟精品一区| 国产三级精品三级| 日韩电影在线一区二区| 一本到不卡免费一区二区| 精品国产3级a| 日韩二区在线观看| 欧美影视一区在线| 中国av一区二区三区| 久久91精品国产91久久小草| 欧美少妇bbb| 中文字幕一区二区三区精华液| 久久国内精品自在自线400部| 欧美狂野另类xxxxoooo| 亚洲欧美另类久久久精品| 国产成人午夜电影网| 精品久久久久99| 青青草97国产精品免费观看| 色先锋aa成人| 最新热久久免费视频| 国产成人自拍在线| 欧美精品一区二区三区一线天视频| 亚洲va欧美va天堂v国产综合| 99精品黄色片免费大全| 中文字幕一区在线观看视频| 国产精品主播直播| 欧美精品一区二区高清在线观看| 亚洲地区一二三色| 欧美无砖砖区免费| 亚洲午夜免费电影| 欧美性一级生活| 亚洲自拍偷拍综合| 欧美色涩在线第一页| 亚洲成人av一区| 欧美人妇做爰xxxⅹ性高电影| 一区二区在线观看免费视频播放| 一本到三区不卡视频|