// BurndiscTest.cpp : 定义应用程序的类行为。 // #include "stdafx.h" #include "BurndiscTest.h" #include "BurndiscTestDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CBurndiscTestApp BEGIN_MESSAGE_MAP(CBurndiscTestApp, CWinAppEx) ON_COMMAND(ID_HELP, &CWinApp::OnHelp) END_MESSAGE_MAP() // CBurndiscTestApp 构造 CBurndiscTestApp::CBurndiscTestApp() { // TODO: 在此处添加构造代码, // 将所有重要的初始化放置在 InitInstance 中 } // 唯一的一个 CBurndiscTestApp 对象 CBurndiscTestApp theApp; // CBurndiscTestApp 初始化 BOOL CBurndiscTestApp::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinAppEx::InitInstance(); AfxEnableControlContainer(); #if 0 CNeroBurndisc NeroCtrl; if (NeroCtrl.NeroAPIInit()) { if (NeroCtrl.GetAvailableDrives() > 0) { CNeroDevice neroDev; if (neroDev.OpenDevice(NeroCtrl.GetDeviceInfs(), 0)) { // 获取媒体信息; NERO_CD_INFO* pNeroCDInfo = NeroGetCDInfo(neroDev.GetDeviceHandle(), NGCDI_READ_CD_TEXT | NGCDI_READ_ISRC); if (pNeroCDInfo == NULL) return FALSE; // 媒体光盘大小 = Blocks * BlockSize; unsigned __int64 MediaSize = ((__int64(pNeroCDInfo->ncdiTotalCapacity)) * pNeroCDInfo->ncdiTrackInfos[0].ntiBlockSize) / 1024 / 1024; NERO_MEDIA_TYPE MediaType = NeroGetCurrentMediumType(neroDev.GetDeviceHandle()); // 写速度; NERO_SPEED_INFOS *pnsiWrite = NeroGetAvailableSpeeds(neroDev.GetDeviceHandle(), ACCESSTYPE_WRITE, pNeroCDInfo->ncdiMediaType, NULL); // 读速度; NERO_SPEED_INFOS *pnsiRead = NeroGetAvailableSpeeds(neroDev.GetDeviceHandle(), ACCESSTYPE_READ, pNeroCDInfo->ncdiMediaType, NULL); } } } #else //_CrtSetBreakAlloc(255); //98500为上面内存泄漏的块号. #if 0 CDiscItem discitem; discitem.InitVituralItem(); discitem.AddPath(_T("E:\\aaaa\\bbbb\\cccc\\")); discitem.AddPath(_T("E:\\aaaa\\bbbb\\eeeee\\")); discitem.AddPath(_T("E:\\aaaa\\bbbb\\gggggg\\")); discitem.AddPath(_T("E:\\aaaa\\bbbb\\jjjjjj\\tttttt")); NERO_ISO_ITEM *pItem = discitem.FindPathItem(_T("E:\\aaaa\\bbbb\\jjjjjj\\tttttt")); pItem = discitem.FindPathItem(_T("jjjjjj")); pItem = discitem.FindPathItem(_T("llll")); return FALSE; #endif IBurndisc *pBurndisc = new CIMAPI2Impl(); pBurndisc->AddRef(); #if NEROIMPL CNeroImpl::m_pDailog = NULL; CNeroImpl::m_pIdelCallback = _IdleCallback; CNeroImpl::m_pUserDialog = _UserDialog; CNeroImpl::m_pProgressCallback = _ProgressCallback; CNeroImpl::m_pSubTaskProgressCallback = _ProgressCallback; CNeroImpl::m_pAbortedCallback = _AbortedCallback; CNeroImpl::m_pAddLogLine = _AddLogLine; CNeroImpl::m_pSetPhaseCallback = _SetPhaseCallback; CNeroImpl::m_pDisableAbortCallback = _DisableAbortCallback; CNeroImpl::m_pSetMajorPhaseCallback = _SetMajorPhaseCallback; CNeroImpl::m_pWriteIOCallback = _WriteIOCallback; CNeroImpl::m_pReadIOCallback = _ReadIOCallback; CNeroImpl::m_pEOFCallback = _EOFCallback; CNeroImpl::m_pErrorCallback = _ErrorCallback; #endif if (pBurndisc->Initialize()) { pBurndisc->GetAvailableDrives(); pDeviceInfo pdvinfo = (pDeviceInfo)pBurndisc->GetDeivceInfo(_T("f:\\PIONEER DVD-RW DVR-XU01 ")); if (pdvinfo) { pdvinfo->nIndex; pdvinfo->strDevName; OutputDebugString(pdvinfo->strDevName.c_str()); } #if 1 // 添加文件; vector vtfiles; filehelpImpl fhelp; fhelp.getfiles_findout_subfolder(_T("E:\\测试相片"), _T("*.*"), &vtfiles); pBurndisc->AddFiles2Disc(_T("aaaa4"), vtfiles); //pBurndisc->AddFiles2Disc(_T("cccc2"), vtfiles); //pBurndisc->AddFiles2Disc(_T("aaaa"), vtfiles); //pBurndisc->AddFiles2Disc(_T("bbbbb"), vtfiles); //pBurndisc->AddFiles2Disc(_T(""), vtfiles); #endif //pBurndisc->AddFolder2Disc(_T("xxxx3"),_T("E:\\测试相片")); //pBurndisc->AddFolder2Disc(_T("xxxx3"),_T("E:\\测试相片2")); //pBurndisc->AddFolder2Disc(_T("xxxx2"),_T("E:\\测试相片")); //pBurndisc->AddFolder2Disc(_T("eeeee"),_T("E:\\测试相片")); pBurndisc->AddFolder2Disc(_T("www24"), _T("E:\\测试相片2")); pBurndisc->BurnMedia(0, _T("aaaa"), _T("标题:利亚方舟")); } pBurndisc->Release(); pBurndisc = NULL; #endif // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); CBurndiscTestDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: 在此放置处理何时用 // “确定”来关闭对话框的代码 } else if (nResponse == IDCANCEL) { // TODO: 在此放置处理何时用 // “取消”来关闭对话框的代码 } // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序, // 而不是启动应用程序的消息泵。 return FALSE; }