BurndiscTest.cpp 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. // BurndiscTest.cpp : 定义应用程序的类行为。
  2. //
  3. #include "stdafx.h"
  4. #include "BurndiscTest.h"
  5. #include "BurndiscTestDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #endif
  9. // CBurndiscTestApp
  10. BEGIN_MESSAGE_MAP(CBurndiscTestApp, CWinAppEx)
  11. ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
  12. END_MESSAGE_MAP()
  13. // CBurndiscTestApp 构造
  14. CBurndiscTestApp::CBurndiscTestApp()
  15. {
  16. // TODO: 在此处添加构造代码,
  17. // 将所有重要的初始化放置在 InitInstance 中
  18. }
  19. // 唯一的一个 CBurndiscTestApp 对象
  20. CBurndiscTestApp theApp;
  21. // CBurndiscTestApp 初始化
  22. BOOL CBurndiscTestApp::InitInstance()
  23. {
  24. // 如果一个运行在 Windows XP 上的应用程序清单指定要
  25. // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
  26. //则需要 InitCommonControlsEx()。否则,将无法创建窗口。
  27. INITCOMMONCONTROLSEX InitCtrls;
  28. InitCtrls.dwSize = sizeof(InitCtrls);
  29. // 将它设置为包括所有要在应用程序中使用的
  30. // 公共控件类。
  31. InitCtrls.dwICC = ICC_WIN95_CLASSES;
  32. InitCommonControlsEx(&InitCtrls);
  33. CWinAppEx::InitInstance();
  34. AfxEnableControlContainer();
  35. #if 0
  36. CNeroBurndisc NeroCtrl;
  37. if (NeroCtrl.NeroAPIInit())
  38. {
  39. if (NeroCtrl.GetAvailableDrives() > 0)
  40. {
  41. CNeroDevice neroDev;
  42. if (neroDev.OpenDevice(NeroCtrl.GetDeviceInfs(), 0))
  43. {
  44. // 获取媒体信息;
  45. NERO_CD_INFO* pNeroCDInfo = NeroGetCDInfo(neroDev.GetDeviceHandle(), NGCDI_READ_CD_TEXT | NGCDI_READ_ISRC);
  46. if (pNeroCDInfo == NULL)
  47. return FALSE;
  48. // 媒体光盘大小 = Blocks * BlockSize;
  49. unsigned __int64 MediaSize = ((__int64(pNeroCDInfo->ncdiTotalCapacity)) * pNeroCDInfo->ncdiTrackInfos[0].ntiBlockSize) / 1024 / 1024;
  50. NERO_MEDIA_TYPE MediaType = NeroGetCurrentMediumType(neroDev.GetDeviceHandle());
  51. // 写速度;
  52. NERO_SPEED_INFOS *pnsiWrite = NeroGetAvailableSpeeds(neroDev.GetDeviceHandle(), ACCESSTYPE_WRITE, pNeroCDInfo->ncdiMediaType, NULL);
  53. // 读速度;
  54. NERO_SPEED_INFOS *pnsiRead = NeroGetAvailableSpeeds(neroDev.GetDeviceHandle(), ACCESSTYPE_READ, pNeroCDInfo->ncdiMediaType, NULL);
  55. }
  56. }
  57. }
  58. #else
  59. //_CrtSetBreakAlloc(255); //98500为上面内存泄漏的块号.
  60. #if 0
  61. CDiscItem discitem;
  62. discitem.InitVituralItem();
  63. discitem.AddPath(_T("E:\\aaaa\\bbbb\\cccc\\"));
  64. discitem.AddPath(_T("E:\\aaaa\\bbbb\\eeeee\\"));
  65. discitem.AddPath(_T("E:\\aaaa\\bbbb\\gggggg\\"));
  66. discitem.AddPath(_T("E:\\aaaa\\bbbb\\jjjjjj\\tttttt"));
  67. NERO_ISO_ITEM *pItem = discitem.FindPathItem(_T("E:\\aaaa\\bbbb\\jjjjjj\\tttttt"));
  68. pItem = discitem.FindPathItem(_T("jjjjjj"));
  69. pItem = discitem.FindPathItem(_T("llll"));
  70. return FALSE;
  71. #endif
  72. IBurndisc *pBurndisc = new CIMAPI2Impl();
  73. pBurndisc->AddRef();
  74. #if NEROIMPL
  75. CNeroImpl::m_pDailog = NULL;
  76. CNeroImpl::m_pIdelCallback = _IdleCallback;
  77. CNeroImpl::m_pUserDialog = _UserDialog;
  78. CNeroImpl::m_pProgressCallback = _ProgressCallback;
  79. CNeroImpl::m_pSubTaskProgressCallback = _ProgressCallback;
  80. CNeroImpl::m_pAbortedCallback = _AbortedCallback;
  81. CNeroImpl::m_pAddLogLine = _AddLogLine;
  82. CNeroImpl::m_pSetPhaseCallback = _SetPhaseCallback;
  83. CNeroImpl::m_pDisableAbortCallback = _DisableAbortCallback;
  84. CNeroImpl::m_pSetMajorPhaseCallback = _SetMajorPhaseCallback;
  85. CNeroImpl::m_pWriteIOCallback = _WriteIOCallback;
  86. CNeroImpl::m_pReadIOCallback = _ReadIOCallback;
  87. CNeroImpl::m_pEOFCallback = _EOFCallback;
  88. CNeroImpl::m_pErrorCallback = _ErrorCallback;
  89. #endif
  90. if (pBurndisc->Initialize()) {
  91. pBurndisc->GetAvailableDrives();
  92. pDeviceInfo pdvinfo = (pDeviceInfo)pBurndisc->GetDeivceInfo(_T("f:\\PIONEER DVD-RW DVR-XU01 "));
  93. if (pdvinfo)
  94. {
  95. pdvinfo->nIndex;
  96. pdvinfo->strDevName;
  97. OutputDebugString(pdvinfo->strDevName.c_str());
  98. }
  99. #if 1
  100. // 添加文件;
  101. vector<TString> vtfiles;
  102. filehelpImpl fhelp;
  103. fhelp.getfiles_findout_subfolder(_T("E:\\测试相片"), _T("*.*"), &vtfiles);
  104. pBurndisc->AddFiles2Disc(_T("aaaa4"), vtfiles);
  105. //pBurndisc->AddFiles2Disc(_T("cccc2"), vtfiles);
  106. //pBurndisc->AddFiles2Disc(_T("aaaa"), vtfiles);
  107. //pBurndisc->AddFiles2Disc(_T("bbbbb"), vtfiles);
  108. //pBurndisc->AddFiles2Disc(_T(""), vtfiles);
  109. #endif
  110. //pBurndisc->AddFolder2Disc(_T("xxxx3"),_T("E:\\测试相片"));
  111. //pBurndisc->AddFolder2Disc(_T("xxxx3"),_T("E:\\测试相片2"));
  112. //pBurndisc->AddFolder2Disc(_T("xxxx2"),_T("E:\\测试相片"));
  113. //pBurndisc->AddFolder2Disc(_T("eeeee"),_T("E:\\测试相片"));
  114. pBurndisc->AddFolder2Disc(_T("www24"), _T("E:\\测试相片2"));
  115. pBurndisc->BurnMedia(0, _T("aaaa"), _T("标题:利亚方舟"));
  116. }
  117. pBurndisc->Release();
  118. pBurndisc = NULL;
  119. #endif
  120. // 标准初始化
  121. // 如果未使用这些功能并希望减小
  122. // 最终可执行文件的大小,则应移除下列
  123. // 不需要的特定初始化例程
  124. // 更改用于存储设置的注册表项
  125. // TODO: 应适当修改该字符串,
  126. // 例如修改为公司或组织名
  127. SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
  128. CBurndiscTestDlg dlg;
  129. m_pMainWnd = &dlg;
  130. INT_PTR nResponse = dlg.DoModal();
  131. if (nResponse == IDOK)
  132. {
  133. // TODO: 在此放置处理何时用
  134. // “确定”来关闭对话框的代码
  135. }
  136. else if (nResponse == IDCANCEL)
  137. {
  138. // TODO: 在此放置处理何时用
  139. // “取消”来关闭对话框的代码
  140. }
  141. // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
  142. // 而不是启动应用程序的消息泵。
  143. return FALSE;
  144. }