DiscItem.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifndef __DISC_ITEM_20151222__
  2. #define __DISC_ITEM_20151222__
  3. #pragma once
  4. // 注意:
  5. // 同一个文件的NERO_ISO_ITEM,可以在Nero光盘中不同目录中使用;
  6. // 在相同的Sibling链中,没有相同的NERO_ISO_IMTE::longFileName/NERO_ISO_ITEM::fileName 或 NERO_ISO_ITEM::longSourceFilePath/NERO_ISO_ITEM::SoucreFilePath;
  7. // NERO_ISO_ITEM形成的树,只能从上往下查找,不能从下往上查找。
  8. // 如果一个文件目录 或 文件,已存在了,再次刻录该目录或文件时,会自动跳过。
  9. // 注意,Nero SDK 使用的是多字节字符集开发;
  10. class CDiscItem
  11. {
  12. public:
  13. CDiscItem(void);
  14. ~CDiscItem(void);
  15. // 光盘树根元素;
  16. NERO_ISO_ITEM* m_pRootItem;
  17. // 光盘写入流;
  18. NERO_WRITE_CD* m_pnwcWriteCD;
  19. // 光盘进度条;
  20. NERO_PROGRESS m_npProgress;
  21. // 光盘信息;
  22. NERO_SCSI_DEVICE_INFOS* m_pndiDeviceInfos;
  23. // 设备句柄;
  24. NERO_DEVICEHANDLE m_ndhDeviceHandle;
  25. // 光盘标题;
  26. CString m_strDiscTitle;
  27. // Nero的刻录设置;
  28. NERO_SETTINGS m_nsSettings;
  29. CDialog* m_pDailog;
  30. char m_pcLanguageFile [128];
  31. char m_pcSoftware [128];
  32. char m_pcVendor [128];
  33. char m_pcNeroFilesPath [128];
  34. char m_pcDriveName [128];
  35. char m_pcImage [256];
  36. bool m_bAborted;
  37. private:
  38. NERO_ISO_ITEM* InitRootItem();
  39. public:
  40. void NeroAPIInit();
  41. NERO_ISO_ITEM* GetDiscItem();
  42. NERO_ISO_ITEM* AddSiblingRootItem( IN NERO_ISO_ITEM* pRootItem );
  43. NERO_ISO_ITEM* AddSiblingRootItem( IN CString strRootName, IN BOOL bIsDirectory );
  44. NERO_ISO_ITEM* AddItem2SiblingItem( IN NERO_ISO_ITEM* pSiblingItem, IN NERO_ISO_ITEM* pNewItem);
  45. NERO_ISO_ITEM* AddItem2Path( IN CString strDiscPath, IN NERO_ISO_ITEM* pNewItem);
  46. NERO_ISO_ITEM* AddSiblingPath(IN CString strDiscPath, IN CString strNewPath);
  47. NERO_ISO_ITEM* AddPath(IN CString strNewPath);
  48. NERO_ISO_ITEM* AddPath2Path(IN CString strDiscPath, IN CString strNewPath);
  49. NERO_ISO_ITEM* AddPath2PathItem(IN NERO_ISO_ITEM* pPathItem, IN CString strNewPath );
  50. NERO_ISO_ITEM* AddFile2Path(IN CString strDiscPath, IN CString strFileName);
  51. NERO_ISO_ITEM* AddFile2SiblingItem(IN NERO_ISO_ITEM* pSiblingItem, IN CString strFileName);
  52. // 按顺序查找;
  53. NERO_ISO_ITEM* FindPathItem( IN CString strDiscPath );
  54. NERO_ISO_ITEM* FindPathInSibling( IN NERO_ISO_ITEM* pSiblingHeadItem, IN CString& strDiscPath );
  55. NERO_ISO_ITEM* FindPathItemEx( IN CString strDiscPath );
  56. NERO_ISO_ITEM* FindPathInSiblingEx( IN NERO_ISO_ITEM* pSiblingHeadItem, IN CString& strDiscPath );
  57. NERO_ISO_ITEM* FindSiblingNextToLast( IN NERO_ISO_ITEM* pSiblingHeadItem );
  58. void RemoveRootItem();
  59. void RemoveAllItem(IN NERO_ISO_ITEM* pRootItem);
  60. };
  61. #endif