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

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

?? cdplayer.cpp

?? CD播放器源代碼 .rar
?? CPP
字號:
#include "cdplayer.h"

#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <mmsystem.h>

bool			cdValid = false;
bool			playing = false;
bool			wasPlaying = false;
bool			initialized = false;
bool			enabled = false;
bool			playLooping = false;
float			cdvolume;
int				trackLength;
int	 			remap[100];
int				cdrom;
int				playTrack;
int				maxTrack;
int				pzMin;
int				pzSec;

UINT			wDeviceID;

extern HWND		g_hWnd;
unsigned int	nCurrentDevice;

int CDAudio_GetTrackLength()
{
	return trackLength;
}

int CDAudio_GetNumTracks()
{
	return maxTrack;
}

void CDAudio_SetCDValidity(bool Validate)
{
	cdValid = Validate;
}

void CDAudio_SetCallBackWin(HWND hWnd)
{
	g_hWnd = hWnd;
	return;
}

void CDAudio_SetCurrectDevice(unsigned int CurrectDevice)
{
	nCurrentDevice = CurrectDevice;
	return;
}

unsigned int CDGetTrackLength(int Track, TCHAR pzStr[30])
{
	MCI_SET_PARMS		sMCISet;
	MCI_STATUS_PARMS	sMCIStatus;

	sMCISet.dwTimeFormat = MCI_FORMAT_MILLISECONDS;
	mciSendCommand (wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD) (LPVOID) &sMCISet);

	sMCIStatus.dwItem = MCI_STATUS_LENGTH;
	sMCIStatus.dwTrack = Track;
	mciSendCommand (wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD) (LPVOID) &sMCIStatus);

	sMCIStatus.dwReturn /= 1000;

	pzMin = sMCIStatus.dwReturn/60;
	pzSec = sMCIStatus.dwReturn%60;

	if(pzSec < 10)
	{
		wsprintf(pzStr, "Time:  %d:0%d", pzMin, pzSec);
	}
	else
	{
		wsprintf(pzStr, "Time:  %d:%d", pzMin, pzSec);
	}

	sMCISet.dwTimeFormat = MCI_FORMAT_TMSF;
	mciSendCommand (wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD) (LPVOID) &sMCISet);

	return sMCIStatus.dwReturn;
}

void CDAudio_Eject(void)
{
	DWORD	dwReturn;

    if (dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, (DWORD)NULL))
	{
		char zError[255];
		mciGetErrorString(dwReturn, zError, 255);
		MessageBox(NULL, zError, "Error", NULL);
	}
}

void CDAudio_CloseDoor(void)
{
	DWORD	dwReturn;

    if (dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, (DWORD)NULL))
	{
		char zError[255];
		mciGetErrorString(dwReturn, zError, 255);
		MessageBox(NULL, zError, "Error", NULL);
	}
}

int CDAudio_GetAudioDiskInfo(void)
{
	DWORD				dwReturn;
	MCI_STATUS_PARMS	mciStatusParms;


	cdValid = false;

	mciStatusParms.dwItem = MCI_STATUS_READY;
    dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
	if (dwReturn)
	{
		char zError[255];
		mciGetErrorString(dwReturn, zError, 255);
		MessageBox(NULL, zError, "Error", NULL);
		return -1;
	}
	if (!mciStatusParms.dwReturn)
	{
		return -1;
	}

	mciStatusParms.dwItem = MCI_STATUS_NUMBER_OF_TRACKS;
    dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
	if (dwReturn)
	{
		char zError[255];
		mciGetErrorString(dwReturn, zError, 255);
		MessageBox(NULL, zError, "Error", NULL);
		return -1;
	}
	if (mciStatusParms.dwReturn < 1)
	{
		return -1;
	}

	cdValid = true;
	maxTrack = mciStatusParms.dwReturn;

	return 0;
}

LONG CDAudio_MessageHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if (lParam != wDeviceID)
		return 1;

	switch (wParam)
	{
		case MCI_NOTIFY_SUCCESSFUL:
			if (playing)
			{
				playing = false;
				if (playLooping)
					CDAudio_Play(playTrack, 0, 0, true, hWnd);
			}
			break;

		case MCI_NOTIFY_ABORTED:
		case MCI_NOTIFY_SUPERSEDED:
			break;

		case MCI_NOTIFY_FAILURE:
			CDAudio_Stop ();
			cdValid = false;
			break;

		default:
			return 1;
	}

	return 0;
}

int CDAudio_CheckValidity(char* error)
{
	DWORD				dwReturn;
	MCI_STATUS_PARMS	mciStatusParms;

	mciStatusParms.dwItem = MCI_CDA_STATUS_TYPE_TRACK;
	mciStatusParms.dwTrack = 1;
    dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
	if (dwReturn)
	{
		char zError[255];
		mciGetErrorString(dwReturn, zError, 255);
		error = zError;
		return 2;
	}
	if (mciStatusParms.dwReturn != MCI_CDA_TRACK_AUDIO)
	{
		char zError[255];
		mciGetErrorString(dwReturn, zError, 255);
		error = zError;
		return 1;
	}

	return 0;
}

int CDAudio_Play(int track, int Min, int Sec, bool looping, HWND hWnd)
{
	DWORD				dwReturn;
    MCI_PLAY_PARMS		mciPlayParms;
	MCI_STATUS_PARMS	mciStatusParms;
	
	if (!enabled)
	{
		MessageBox(g_hWnd, "CD-ROM not yet initialized", "Error", NULL);
		return 1;
	}

	CDAudio_GetAudioDiskInfo();
	
	if (!cdValid)
	{
		CDAudio_GetAudioDiskInfo();
		if (!cdValid)
		{
			MessageBox(hWnd, "Invalid CD", "Error", NULL);
			return 1;
		}
	}

	track = remap[track];

	// don't try to play a non-audio track
	mciStatusParms.dwItem = MCI_CDA_STATUS_TYPE_TRACK;
	mciStatusParms.dwTrack = track;
    dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
	if (dwReturn)
	{
		char zError[255];
		mciGetErrorString(dwReturn, zError, 255);
		MessageBox(hWnd, zError, "Error", NULL);
		return 1;
	}
	if (mciStatusParms.dwReturn != MCI_CDA_TRACK_AUDIO)
	{
		char zError[255];
		mciGetErrorString(dwReturn, zError, 255);
		MessageBox(hWnd, zError, "Error", NULL);
		return 2;
	}

	// get the length of the track to be played
	mciStatusParms.dwItem = MCI_STATUS_LENGTH;
	mciStatusParms.dwTrack = track;
    dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
	if (dwReturn)
	{
		char zError[255];
		mciGetErrorString(dwReturn, zError, 255);
		MessageBox(hWnd, zError, "Error", NULL);
		return 1;
	}

	trackLength = mciStatusParms.dwReturn;

    mciPlayParms.dwFrom = MCI_MAKE_TMSF(track, Min, Sec, 0);
	mciPlayParms.dwTo = (mciStatusParms.dwReturn << 8) | track;
    mciPlayParms.dwCallback = (DWORD)hWnd;
    dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY | MCI_FROM | MCI_TO, (DWORD)(LPVOID) &mciPlayParms);
	if (dwReturn)
	{
		char zError[255];
		mciGetErrorString(dwReturn, zError, 255);
		MessageBox(hWnd, zError, "Error", NULL);
		return 1;
	}

	playLooping = looping;
	playTrack = track;
	playing = true;
	return 0;
}

void CDAudio_Stop(void)
{
	DWORD	dwReturn;

	if (!enabled)
		return;
	
	if (!playing)
		return;

    if (dwReturn = mciSendCommand(wDeviceID, MCI_STOP, 0, (DWORD)NULL))

	wasPlaying = false;
	playing = false;
}

void CDAudio_Pause(void)
{
	DWORD				dwReturn;
	MCI_GENERIC_PARMS	mciGenericParms;

	if (!enabled)
		return;

	if (!playing)
		return;

	mciGenericParms.dwCallback = (DWORD)g_hWnd;
    if (dwReturn = mciSendCommand(wDeviceID, MCI_PAUSE, 0, (DWORD)(LPVOID) &mciGenericParms))

	wasPlaying = playing;
	playing = false;
}

void CDAudio_Update(void)
{
	if (!enabled)
		return;
}

int CDAudio_Init(int CurrentDevice)
{
	DWORD	dwReturn;
	MCI_OPEN_PARMS	mciOpenParms;
    MCI_SET_PARMS	mciSetParms;
	int				n;

	char zDevice[4];
    sprintf(zDevice, "%c:", (char)CurrentDevice + 'A');
	nCurrentDevice = CurrentDevice;

	mciOpenParms.lpstrDeviceType = (LPCSTR) MCI_DEVTYPE_CD_AUDIO;
	mciOpenParms.lpstrElementName = zDevice;
	if (dwReturn = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_SHAREABLE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT, (DWORD) (LPVOID) &mciOpenParms))
	{
		char zError[255];
		mciGetErrorString(dwReturn, zError, 255);
		MessageBox(NULL, zError, "Error", NULL);
		return -1;
	}
	wDeviceID = mciOpenParms.wDeviceID;

    // Set the time format to track/minute/second/frame (TMSF).
    mciSetParms.dwTimeFormat = MCI_FORMAT_TMSF;
    if (dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD)(LPVOID) &mciSetParms))
    {
		char zError[255];
		mciGetErrorString(dwReturn, zError, 255);
		MessageBox(NULL, zError, "Error", NULL);
        mciSendCommand(wDeviceID, MCI_CLOSE, 0, (DWORD)NULL);
		return -1;
    }

	for (n = 0; n < 100; n++)
		remap[n] = n;
	initialized = true;
	enabled = true;

	if (CDAudio_GetAudioDiskInfo())
	{
		cdValid = false;
	}

	return 0;
}

void CDAudio_Shutdown(void)
{
	if (!initialized)
		return;
	CDAudio_Stop();
	if (mciSendCommand(wDeviceID, MCI_CLOSE, MCI_WAIT, (DWORD)NULL))
	{}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久av影院| 国产婷婷一区二区| 精品夜夜嗨av一区二区三区| 中文av一区二区| 久久久久久久久久看片| 91精品久久久久久久91蜜桃| 欧美综合一区二区三区| eeuss鲁片一区二区三区在线看| 久久精品理论片| 精品一区二区三区久久| 一本到不卡免费一区二区| 国产91丝袜在线观看| 国产福利一区二区三区视频| 国产999精品久久久久久绿帽| 91福利国产成人精品照片| 在线视频一区二区三区| 国产日韩高清在线| 亚洲欧洲国产日本综合| 中文字幕免费在线观看视频一区| 国产精品你懂的| 九九精品一区二区| 欧美日韩国产综合一区二区| 91.xcao| 亚洲永久免费av| 亚洲一级在线观看| 不卡视频免费播放| 8x8x8国产精品| 亚洲久本草在线中文字幕| 午夜精品久久久久久久 | 国产欧美一区二区在线观看| 亚洲制服丝袜在线| 欧美三区免费完整视频在线观看| 欧美va天堂va视频va在线| 天天av天天翘天天综合网色鬼国产| 色菇凉天天综合网| 一区二区在线看| 91九色最新地址| 亚洲国产欧美在线| 国产99久久精品| 国产精品美女久久久久aⅴ国产馆| 国产成人自拍在线| 国产精品成人免费| 奇米精品一区二区三区四区| 国产麻豆精品95视频| 色综合久久久网| 亚洲免费观看高清完整版在线| 黄色精品一二区| 欧美日韩国产天堂| 日韩国产一二三区| 91视频在线看| 国产欧美一区二区精品性色| 国产91对白在线观看九色| 中文字幕精品一区| 色综合天天狠狠| 免费不卡在线观看| 国产午夜精品一区二区三区四区| 懂色av中文一区二区三区| 亚洲视频一区二区在线| 国产一二三精品| 国产精品大尺度| 91.xcao| 成人免费黄色在线| 2020国产成人综合网| 日韩激情一二三区| 欧美色欧美亚洲另类二区| 美女免费视频一区二区| 欧美日本国产视频| 激情综合一区二区三区| 亚洲三级电影网站| 日韩欧美电影一区| 亚洲成人一二三| 欧美视频你懂的| 午夜视频在线观看一区二区三区| 2023国产精品自拍| 在线中文字幕一区| 国产精品99久久久久久宅男| 欧美不卡一区二区| 99r国产精品| 亚洲综合色区另类av| 久久夜色精品一区| 欧美日韩一区二区三区四区五区| 激情五月激情综合网| 亚洲精品乱码久久久久久久久 | 精品国产3级a| 国产福利一区二区三区| 亚洲成人在线免费| 中文字幕中文在线不卡住| 欧美变态口味重另类| 色久综合一二码| 成人性生交大片免费看视频在线| 日韩和欧美一区二区三区| 国产精品国产自产拍高清av| 精品国产乱码久久久久久老虎| 91高清在线观看| 成av人片一区二区| 国产凹凸在线观看一区二区| 日韩精品亚洲一区二区三区免费| 亚洲欧美一区二区久久| 国产欧美va欧美不卡在线| 精品毛片乱码1区2区3区| 欧美综合一区二区三区| 91视频一区二区三区| 成人国产在线观看| 高清视频一区二区| 国产精品影音先锋| 久久99精品国产麻豆婷婷洗澡| 日本不卡一区二区| 日韩和欧美一区二区| 亚洲成av人片一区二区| 亚洲美女视频在线| 伊人夜夜躁av伊人久久| 中文字幕在线一区免费| 国产精品乱码久久久久久 | 欧美日韩久久久久久| 99这里只有久久精品视频| 成人综合日日夜夜| 成人午夜av电影| 91亚洲精品乱码久久久久久蜜桃| 成人免费va视频| 91欧美一区二区| 色94色欧美sute亚洲线路二 | 国产精品资源网站| 国产精品亚洲综合一区在线观看| 国产老妇另类xxxxx| 久久99精品国产| 国产宾馆实践打屁股91| 99精品欧美一区二区三区综合在线| 不卡av在线免费观看| 91麻豆精品视频| 欧美午夜在线一二页| 欧美日韩精品综合在线| 日韩欧美色综合网站| 久久免费视频色| 国产精品国产三级国产普通话三级| 国产精品美女久久久久av爽李琼| 亚洲视频你懂的| 日韩电影在线一区二区三区| 久久精品国产成人一区二区三区| 国产91丝袜在线播放| 91一区二区三区在线播放| 欧美日韩亚洲丝袜制服| 欧美电视剧免费观看| 国产精品嫩草99a| 亚洲国产日韩一级| 激情综合网av| 91天堂素人约啪| 欧美精品一二三| 欧美性感一区二区三区| 欧美日韩高清一区| 久久九九久久九九| 一区二区三区免费网站| 亚洲欧美国产三级| 日韩有码一区二区三区| 成人免费黄色大片| 欧美蜜桃一区二区三区| 国产视频一区不卡| 亚洲国产精品久久一线不卡| 国内外成人在线| 欧美系列日韩一区| 国产欧美日韩在线观看| 亚洲一区二区在线视频| 国产激情一区二区三区桃花岛亚洲| 在线观看日韩高清av| 亚洲国产电影在线观看| 日日夜夜免费精品| 91麻豆国产香蕉久久精品| 久久久亚洲综合| 亚洲国产精品自拍| 成人黄色小视频在线观看| 欧美一区二区三区免费观看视频| 在线电影国产精品| 成人免费一区二区三区在线观看| 免费成人在线影院| 欧美日韩一本到| 中文字幕亚洲区| 国产成人aaaa| 欧美大黄免费观看| 天天色天天操综合| 在线观看免费成人| 亚洲欧美aⅴ...| 99视频精品在线| 亚洲国产高清aⅴ视频| 激情都市一区二区| 日韩精品一区二区在线| 亚洲成人久久影院| 91激情五月电影| 亚洲另类在线一区| 97se亚洲国产综合自在线观| 久久色视频免费观看| 美女一区二区视频| 欧美日韩高清影院| 视频在线观看国产精品| 91久久精品国产91性色tv| 亚洲人成人一区二区在线观看| 丁香婷婷综合色啪| 国产片一区二区| 国产91精品欧美| 中文字幕人成不卡一区| 91性感美女视频| 亚洲激情六月丁香|