|
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
|