⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 writevideocd.cpp

📁 把doc文档转成pdf后刻录成CD,用VC++开发,用了Nero的SDK和CXIMAGE的D
💻 CPP
字号:
/******************************************************************************
|* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|* PARTICULAR PURPOSE.
|* 
|* Copyright 1995-2004 Ahead Software AG. All Rights Reserved.
|*-----------------------------------------------------------------------------
|* NeroSDK / NeroCmd
|*
|* PROGRAM: WriteVideoCD.cpp
|*
|* PURPOSE: Burn Video CDs
******************************************************************************/


#include "stdafx.h"
#include "BurnContext.h"


// This function performs burning Video or Super Video CDs.

CExitCode CBurnContext::WriteVideoCD (const PARAMETERS & params)
{
	int iSize;
	NERO_WRITE_VIDEO_CD * pWriteCD;
	EXITCODE code;
	NERO_ISO_ITEM * pItem = NULL;

	// Calculate the size required for NERO_WRITE_CD plus the given number of tracks

	iSize = sizeof (NERO_WRITE_VIDEO_CD) + (params.GetNumberOfTracks() - 1) * sizeof (NERO_VIDEO_ITEM);

	// Allocate the required memory and assign it to the NERO_WRITE_CD pointer

	pWriteCD = (NERO_WRITE_VIDEO_CD *) new char[iSize];
	if (!pWriteCD)
	{
		return EXITCODE_OUT_OF_MEMORY;
	}

	// Fill the allocated memory with null bytes

	memset (pWriteCD, 0, iSize);

	// Fill in the basic information

	pWriteCD->nwvcdSVCD = (BURNTYPE_SVIDEOCD == params.GetBurnType())? true: false;
	pWriteCD->nwvcdNumItems = params.GetNumberOfTracks();

	pWriteCD->nwvcdLongTempPath = params.GetTempPath ();

	pWriteCD->nwvcdEncodingResolution = params.GetVideoResolution ();

	try
	{
		// Get the ISO track from the information in the parameters.

		code = GetIsoTrack (params, &pWriteCD->nwvcdIsoTrack, &pItem);
		if (code != EXITCODE_OK)
		{
			throw code;
		}

		for (int i = 0; i < params.GetNumberOfTracks(); i ++)
		{
			// Helper variables to promote readability

			LPCSTR psFilename = params.GetTrackFileName(i);
			NERO_VIDEO_ITEM * item = &pWriteCD->nwvcdItems[i];

			item->nviLongSourceFileName = psFilename;

			// MPEG and JPEG are allowed types
			// stricmp performs a lowercase comparison and returns 0 if the strings are identical.
			// We fill in type information and file name.

			LPCSTR psExt = strrchr (psFilename, '.');

			if (psExt && (!stricmp (psExt, ".mpg") || !stricmp (psExt, ".mpeg")))
			{
				item->nviItemType = NERO_MPEG_ITEM;

				// no pause after mpeg items

				item->nviPauseAfterItem=0;
			}
			else if (psExt && (!stricmp (psExt, ".avi")))
			{
				item->nviItemType = NERO_NONENCODED_VIDEO_ITEM;
				
				// no pause after avi items

				item->nviPauseAfterItem=0;
			}
			else if (psExt && (!stricmp (psExt, ".jpg") || !stricmp (psExt, ".jpeg")))
			{
				item->nviItemType = NERO_JPEG_ITEM;
				
				// infinite pause after jpeg items
				
				item->nviPauseAfterItem=-1;
			}
			else
			{
				m_ErrorLog.printf ("Unknown file type '%s'\n", params.GetTrackFileName(i));
				
				throw EXITCODE_UNKNOWN_FILE_TYPE;
			}
		}
		
		NEROAPI_BURN_ERROR err;
		CBurnContextProgress m_NeroProgress;
		
		// Perform the actual burn process

		err = NeroBurn (m_NeroDeviceHandle,
						NERO_VIDEO_CD,
						pWriteCD,
						GetBurnFlags (params),
						params.GetSpeedToNeroBurn (),
						m_NeroProgress);

		code = TranslateNeroToExitCode (err);
	}
	catch (EXITCODE e)
	{
		code = e;
	}

	// Free allocated memory

	NeroFreeIsoTrack (pWriteCD->nwvcdIsoTrack);
	DeleteIsoItemTree (pItem);
	delete [] (char *)pWriteCD;

	return code;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -