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

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

?? mci.cpp

?? VC++課程設計,CD播放機,運行此程序,可以對CD上的內容進行播放,并且可以選擇播放時段
?? CPP
字號:
//////////////////////////////////////////////////////////////////////////
// CMciDevice implementation file
//
// Copyright (C) 1997, 1998 Giancarlo Iovino (giancarlo@saria.com)
// All rights reserved. May not be sold for profit.
//
// This software is provided 'as it is' without implicit or explicit
// warranty.
//
// This code was develeped for MFC Programmer's Sourcebook
// (http://www.codeguru.com)
//
#include "stdafx.h"
#include "mci.h"

//////////////////////////////////////////////////////////////////////////
// CMciDevice implementation
//

// Common Modes
const DWORD CMciDevice::ModeNotReady = MCI_MODE_NOT_READY;
const DWORD CMciDevice::ModePause	 = MCI_MODE_PAUSE;
const DWORD CMciDevice::ModePlay	 = MCI_MODE_PLAY;
const DWORD CMciDevice::ModeStop	 = MCI_MODE_STOP;
const DWORD CMciDevice::ModeOpen	 = MCI_MODE_OPEN;
const DWORD CMciDevice::ModeRecord	 = MCI_MODE_RECORD;
const DWORD CMciDevice::ModeSeek	 = MCI_MODE_SEEK;
// Common status
const DWORD CMciDevice::StatusReady			 = MCI_STATUS_READY;
const DWORD CMciDevice::StatusMediaPresent	 = MCI_STATUS_MEDIA_PRESENT;
const DWORD CMciDevice::StatusMode			 = MCI_STATUS_MODE;
const DWORD CMciDevice::StatusNumberOfTracks = MCI_STATUS_NUMBER_OF_TRACKS;
// Common capabilites
const DWORD CMciDevice::GetdevcapsCanEject	 = MCI_GETDEVCAPS_CAN_EJECT;
const DWORD CMciDevice::GetdevcapsCanPlay	 = MCI_GETDEVCAPS_CAN_PLAY;
const DWORD CMciDevice::GetdevcapsCanRecord	 = MCI_GETDEVCAPS_CAN_RECORD;
const DWORD CMciDevice::GetdevcapsCanSave	 = MCI_GETDEVCAPS_CAN_SAVE;
const DWORD CMciDevice::GetdevcapsCompound	 = MCI_GETDEVCAPS_COMPOUND_DEVICE;
const DWORD CMciDevice::GetdevcapsDeviceType = MCI_GETDEVCAPS_DEVICE_TYPE;
const DWORD CMciDevice::GetdevcapsHasAudio	 = MCI_GETDEVCAPS_HAS_AUDIO;
const DWORD CMciDevice::GetdevcapsHasVideo	 = MCI_GETDEVCAPS_HAS_VIDEO;
const DWORD CMciDevice::GetdevcapsUsesFiles	 = MCI_GETDEVCAPS_USES_FILES;

const DWORD CMciDevice::InfoProduct = MCI_INFO_PRODUCT;

const DWORD CMciDevice::DevtypeAnimation	= MCI_DEVTYPE_ANIMATION;
const DWORD CMciDevice::DevtypeCdaudio		= MCI_DEVTYPE_CD_AUDIO;		
const DWORD CMciDevice::DevtypeDat			= MCI_DEVTYPE_DAT;		
const DWORD CMciDevice::DevtypeDigitalvideo = MCI_DEVTYPE_DIGITAL_VIDEO;
const DWORD CMciDevice::DevtypeOther		= MCI_DEVTYPE_OTHER;
const DWORD CMciDevice::DevtypeOverlay		= MCI_DEVTYPE_OVERLAY;	
const DWORD CMciDevice::DevtypeScanner		= MCI_DEVTYPE_SCANNER;	
const DWORD CMciDevice::DevtypeSequencer	= MCI_DEVTYPE_SEQUENCER;
const DWORD CMciDevice::DevtypeVcr			= MCI_DEVTYPE_VCR;
const DWORD CMciDevice::DevtypeVideodisc	= MCI_DEVTYPE_VIDEODISC;
const DWORD CMciDevice::DevtypeWaveaudio	= MCI_DEVTYPE_WAVEFORM_AUDIO;

CMciDevice::CMciDevice() {
	m_wDeviceID = NULL;
	m_hMainWnd = NULL;
	m_bReportErrors = FALSE;
}

CMciDevice::~CMciDevice() {
}

// Open by device name (obtained by the registry or system.ini)
DWORD CMciDevice::Open(LPCSTR lpstrName, BOOL bShareable /*=FALSE*/) 
{	
	ASSERT(lpstrName != NULL);

	DWORD dwReturn;
	MCI_OPEN_PARMS mciOpenParms;

	// Open a device by specifying the device name.
	mciOpenParms.lpstrDeviceType = lpstrName;		
	
	DWORD dwFlags = MCI_OPEN_TYPE|MCI_WAIT;
	if (bShareable) dwFlags |= MCI_OPEN_SHAREABLE;

	dwReturn = SendCommand(MCI_OPEN, dwFlags, (DWORD)(LPVOID) &mciOpenParms);
	
	if (dwReturn == 0) {
		// The device opened successfully; get the device ID.
		m_wDeviceID = mciOpenParms.wDeviceID;		
	}
	
	return dwReturn;
}

// Open by device type
DWORD CMciDevice::Open(DWORD dwDeviceType, BOOL bShareable /*=FALSE*/) 
{
	DWORD dwReturn;
	MCI_OPEN_PARMS mciOpenParms;

	// Opens a device by specifying a device-type constant.
	mciOpenParms.lpstrDeviceType = (LPCSTR) dwDeviceType;
	
	DWORD dwFlags = MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_WAIT;
	if (bShareable) dwFlags |= MCI_OPEN_SHAREABLE;

	dwReturn = SendCommand(MCI_OPEN, dwFlags, 
			(DWORD)(LPVOID) &mciOpenParms);

	if (dwReturn == 0) {
		// The device opened successfully; get the device ID.
		m_wDeviceID = mciOpenParms.wDeviceID;		
	}
		
	return dwReturn;
}

// Closes the device
DWORD CMciDevice::Close() {	
	MCI_GENERIC_PARMS mciGenericParms;
	mciGenericParms.dwCallback = (DWORD) m_hMainWnd;
	return SendCommand(MCI_CLOSE, 0, (DWORD) &mciGenericParms);	
}

// Gets the current callback window
HWND CMciDevice::GetCallbackHwnd() const {
	return m_hMainWnd;
}

// Set the current callback window
void CMciDevice::SetCallbackWnd(CWnd *pWnd) {
	ASSERT(pWnd != NULL);
	m_hMainWnd = pWnd->GetSafeHwnd();
}

// Set the current callback window
void CMciDevice::SetCallbackWnd(HWND hWnd) {
	ASSERT(hWnd != NULL);
	m_hMainWnd = hWnd;
}

// Attaches the MCI device to a device already opened
void CMciDevice::Attach(UINT wDeviceID) {
	m_wDeviceID = wDeviceID;
}

// Gets the device ID
MCIDEVICEID CMciDevice::GetDeviceID() const {
	return m_wDeviceID;
}

// mciSendCommand with error handling
DWORD CMciDevice::SendCommand(UINT uMsg, DWORD fdwCommand, DWORD dwParam) {
	DWORD dwReturn;
	if (dwReturn = mciSendCommand(m_wDeviceID, uMsg, fdwCommand, dwParam)) {
		m_dwLastError = dwReturn;
		if (m_bReportErrors) 
			ShowError(dwReturn);
	}
	return dwReturn;
}

MCIERROR CMciDevice::GetLastError() const {
	return m_dwLastError;
}

// Generic MCI_GETDEVCAPS_ITEM command: good for all devices
DWORD CMciDevice::GetDevCaps(DWORD dwDevcaps, BOOL bItem /*=FALSE*/) {	
	MCI_GETDEVCAPS_PARMS mciCapsParms;

	mciCapsParms.dwCallback = (DWORD) m_hMainWnd;    
    mciCapsParms.dwReturn = 0;
	
	if (bItem) {
		mciCapsParms.dwItem = dwDevcaps;
		dwDevcaps |= MCI_GETDEVCAPS_ITEM;
	}

	SendCommand(MCI_GETDEVCAPS, dwDevcaps, (DWORD) &mciCapsParms);
	
	return mciCapsParms.dwReturn;
}

// Generic MCI_INFO command
DWORD CMciDevice::GetInfo(DWORD dwInfo, LPSTR lpstrReturn, DWORD dwRetSize) {
	MCI_INFO_PARMS mciInfoParms;	
	 
	mciInfoParms.dwCallback = (DWORD) m_hMainWnd;
    mciInfoParms.lpstrReturn = lpstrReturn;
    mciInfoParms.dwRetSize = dwRetSize;

	return SendCommand(MCI_INFO, dwInfo, (DWORD) &mciInfoParms);	
}

// Set error report on/off
void CMciDevice::ReportErrors(BOOL bReport /*=TRUE*/) {
	m_bReportErrors = bReport;
}

// Uses mciGetErrorString to get a textual description of an MCI error.
// Displays the error description using MessageBox.
void CMciDevice::ShowError(DWORD dwError)
{
    char szErrorBuf[MAXERRORLENGTH];
    MessageBeep(MB_ICONEXCLAMATION);
	
	CWnd* pMainWnd = AfxGetApp()->m_pMainWnd;
	ASSERT(pMainWnd != NULL);
	HWND hMainWnd = pMainWnd->GetSafeHwnd();

    if(mciGetErrorString(dwError, (LPSTR) szErrorBuf, MAXERRORLENGTH)) {
		MessageBox(hMainWnd, szErrorBuf, _T("MCI Error"),
			       MB_ICONEXCLAMATION);
	}
    else
        MessageBox(hMainWnd, _T("Unknown Error"), _T("MCI Error"),
			       MB_ICONEXCLAMATION);
}

// Closes all MCI devices opened by the application.
// Waits until devices are closed before returning.
DWORD CMciDevice::CloseAll()
{
	DWORD dwReturn;

	if (dwReturn = mciSendCommand(MCI_ALL_DEVICE_ID, MCI_CLOSE, MCI_WAIT, NULL))
		ShowError(dwReturn);
	return dwReturn;
}

DWORD CMciDevice::GetMode() {
	return GetStatus(StatusMode);
}

// Generic MCI_STATUS command
DWORD CMciDevice::GetStatus(DWORD dwItem) {	
	MCI_STATUS_PARMS mciStatusParms;
	mciStatusParms.dwCallback = (DWORD) m_hMainWnd;
	mciStatusParms.dwItem = dwItem;
	mciStatusParms.dwReturn = 0;
	
	SendCommand(MCI_STATUS, MCI_STATUS_ITEM, (DWORD) &mciStatusParms);
		
	return mciStatusParms.dwReturn;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情一二三区| 精品国产乱码久久久久久久久| 九色综合国产一区二区三区| 亚洲图片一区二区| 亚洲欧美日韩在线| 亚洲激情图片一区| 亚洲大片免费看| 天天射综合影视| 午夜电影网亚洲视频| 婷婷夜色潮精品综合在线| 日韩精品一二三四| 狠狠色综合播放一区二区| 精品在线视频一区| 国产乱码精品一品二品| 粉嫩蜜臀av国产精品网站| 成人精品鲁一区一区二区| 不卡电影免费在线播放一区| eeuss影院一区二区三区| 色偷偷成人一区二区三区91| 欧洲色大大久久| 欧美精品在线观看播放| 日韩精品一区二区三区中文不卡| 欧美成人欧美edvon| 日本一区二区成人| 亚洲综合自拍偷拍| 美女mm1313爽爽久久久蜜臀| 国产二区国产一区在线观看| 97se狠狠狠综合亚洲狠狠| 91福利国产精品| 日韩一级片在线播放| 欧美激情一区在线| 亚洲午夜久久久久| 国产精品综合在线视频| 色婷婷av一区二区| 精品国产免费一区二区三区四区 | 久草热8精品视频在线观看| 国产真实乱对白精彩久久| 色婷婷av一区二区三区gif| 欧美一区二区三区视频免费| 日本一区二区三区四区在线视频| 一区二区三区在线影院| 国产综合久久久久久鬼色| 91麻豆国产自产在线观看| 91麻豆精品国产91久久久更新时间| 久久久久久久网| 亚洲v精品v日韩v欧美v专区| 国产成a人无v码亚洲福利| 欧美偷拍一区二区| 国产精品免费av| 久久精品国产99国产精品| 91丨九色丨蝌蚪富婆spa| www成人在线观看| 奇米888四色在线精品| 色婷婷国产精品综合在线观看| 国产亚洲成av人在线观看导航| 天天做天天摸天天爽国产一区| 成人黄色国产精品网站大全在线免费观看| 欧美人与性动xxxx| 一区二区三区精密机械公司| 国产成人av自拍| 日韩欧美不卡在线观看视频| 亚洲精品中文字幕乱码三区| 波多野结衣中文一区| 久久久精品黄色| 久久国产精品第一页| 在线播放亚洲一区| 亚洲电影一区二区三区| 91黄视频在线| 一级女性全黄久久生活片免费| caoporen国产精品视频| 中文字幕国产一区二区| 国产suv精品一区二区6| 久久久久国产精品厨房| 国产在线视视频有精品| 久久免费美女视频| 国产精品一级在线| 精品福利二区三区| 国产精品99久久久久久宅男| 久久久国产午夜精品| 粉嫩嫩av羞羞动漫久久久| 日本一区二区电影| 色呦呦国产精品| 香蕉加勒比综合久久| 制服丝袜亚洲精品中文字幕| 日韩二区三区四区| 精品国产91洋老外米糕| 国产91精品在线观看| 亚洲欧美一区二区在线观看| 色婷婷国产精品| 日韩精品成人一区二区在线| 日韩视频免费观看高清完整版| 久久草av在线| 国产三级欧美三级日产三级99| 成人性生交大片免费| 亚洲猫色日本管| 欧美日韩高清一区二区三区| 久久精品国产一区二区三| 国产视频一区二区三区在线观看| 91在线免费播放| 日日摸夜夜添夜夜添亚洲女人| 26uuu欧美| 91在线视频播放地址| 日韩精品每日更新| 久久久久九九视频| 欧美在线观看一二区| 老司机一区二区| 亚洲婷婷综合久久一本伊一区 | 欧美疯狂性受xxxxx喷水图片| 九九精品视频在线看| 中文字幕一区二区三区四区不卡 | 欧美一区二区三区在线电影| 国产麻豆视频精品| 亚洲综合色在线| 2017欧美狠狠色| 欧美亚洲国产一区二区三区va| 久久99精品国产麻豆不卡| 日韩一区日韩二区| 欧美本精品男人aⅴ天堂| 一本一道综合狠狠老| 久久99精品久久久| 午夜在线电影亚洲一区| 亚洲国产精品黑人久久久 | 蜜臀av在线播放一区二区三区| 亚洲国产精品成人久久综合一区| 欧美日韩视频第一区| 国产精品18久久久久久久久| 亚洲va韩国va欧美va| 亚洲欧洲三级电影| 2021久久国产精品不只是精品| 欧美综合天天夜夜久久| 高清不卡在线观看av| 麻豆成人久久精品二区三区小说| 一区二区在线免费观看| 国产欧美一区二区精品仙草咪| 日韩一级黄色片| 欧美性猛交xxxxxx富婆| 成人国产精品视频| 国产精品一二三在| 久久精品72免费观看| 午夜激情一区二区三区| 亚洲一区影音先锋| 亚洲精品你懂的| 亚洲欧洲性图库| 欧美激情在线看| 日本一区二区动态图| 久久亚洲欧美国产精品乐播| 欧美一区二区三区四区高清 | 国产主播一区二区三区| 麻豆精品一区二区三区| 日韩精品每日更新| 青青草国产成人99久久| 蜜桃av噜噜一区| 蜜桃av一区二区在线观看| 免费人成网站在线观看欧美高清| 午夜精品免费在线| 日日摸夜夜添夜夜添亚洲女人| 丝袜美腿亚洲综合| 日本网站在线观看一区二区三区| 无码av免费一区二区三区试看| 亚洲午夜免费电影| 日本欧美大码aⅴ在线播放| 日本亚洲一区二区| 精品亚洲porn| 久久99精品久久久| 国产精品亚洲午夜一区二区三区| 国产真实乱偷精品视频免| 国产精品一区不卡| 91浏览器打开| 欧美亚洲一区二区在线| 欧美日本韩国一区| 26uuu国产日韩综合| 国产清纯白嫩初高生在线观看91| 欧美极品xxx| 亚洲精品久久久蜜桃| 三级精品在线观看| 精品一区二区综合| av高清不卡在线| 欧美色爱综合网| 久久影视一区二区| 中文字幕一区二区三区四区| 亚洲国产精品天堂| 久国产精品韩国三级视频| av在线这里只有精品| 色视频欧美一区二区三区| 欧美一区二区在线免费播放 | 欧美性淫爽ww久久久久无| 91精品国产福利| 国产视频一区在线播放| 亚洲一区二区三区国产| 精品一区二区三区日韩| 成人avav在线| 日韩免费视频线观看| 亚洲视频资源在线| 久久福利资源站| 色天使色偷偷av一区二区 | 丁香婷婷综合五月| 欧美精三区欧美精三区| 国产精品久久久久永久免费观看 | 九九久久精品视频| 在线观看91视频|