Index   Commented   Search   About

Using the Editing Functions and Putting a File on the Clipboard

The following example cuts, copies, or deletes segments from an array of streams. The cut and copied streams are merged into a new file and placed on the clipboard. The functions used include EditStreamClone, EditStreamCopy, and EditStreamCut.

// Global variables

// gcpavi - count of streams in an AVI file

// gapavi[] - array of stream-interface pointers, used as data source

// gapaviSel[] - stream-interface pointers of edited streams

// galSelStart[] - edit starting point in each stream

// galSelLen[] - length of edit to make in each stream

// gapaviTemp[] - array of stream-interface pointers put on clipboard

//

// Comment:

// The editable streams in gapaviSel have been

// initialized with CreateEditableStream.

//

case MENU_CUT:

case MENU_COPY:

case MENU_DELETE:

{

PAVIFILE pf;

int i;

// Walk list of selections and make streams out of each section.

gcpaviSel = 0; // index counter for destination streams

for (i = 0; i < gcpavi; i++) {

if (galSelStart[i] != -1) {

if (wParam == MENU_COPY)

EditStreamCopy(gapavi[i], &galSelStart[i],

&galSelLen[i], &gapaviSel[gcpaviSel++]);

else {

EditStreamCut(gapavi[i], &galSelStart[i],

&galSelLen[i], &gapaviSel[gcpaviSel++]);

}

}

}

.

.

.

// Put on the clipboard if segment is not deleted.

if (gcpaviSel && wParam != MENU_DELETE) {

PAVISTREAM gapaviTemp[MAXNUMSTREAMS];

int i;

// Clone the edited streams, so that if the user does

// more editing, the clipboard won't change.

for (i = 0; i < gcpaviSel; i++) {

gapaviTemp[i] = NULL;

EditStreamClone(gapaviSel[i], &gapaviTemp[i]);

//

// Place error check here.

//

}

// Create a file from the streams and put on clipboard.

AVIMakeFileFromStreams(&pf, gcpaviSel, gapaviTemp);

AVIPutFileOnClipboard(pf);

// Release clone streams.

for (i = 0; i < gcpaviSel; i++) {

AVIStreamRelease(gapaviTemp[i]);

}

// Release file put on clipboard.

AVIFileRelease(pf);

}

// Release streams created.

for (i = 0; i < gcpaviSel; i++)

AVIStreamRelease(gapaviSel[i]);

}

Related Links

Software for Delphi and C++ Builder developers
Software for Visual Studio .NET developers
Software for Visual Basic 6 developers
Delphi Tips&Tricks
MegaDetailed.NET

More Online Helps

Win32 Programmer's Reference (win32.hlp)
OLE Programmer's Reference (ole.hlp)
Microsoft Windows Pen API Programmer's Reference (penapi.hlp)
Microsoft Windows Sockets 2 Reference (sock2.hlp)
Microsoft Windows Telephony API (TAPI) Programmer's Reference (tapi.hlp)
Unix Manual Pages

Free Tech Secrets ;) Copyright © 2008 Free Tect Secrets ;) greatis just4fun network just4fun