IPegasusFileFilterSite::OpenDestinationFile

This method is called by a file filter to open a destination file.

At a Glance

Header file: Replfilt.h
Windows CE versions: 1.0 and later

Syntax

STDMETHODIMP IPegasusFileFilterSite::OpenDestinationFile(
int
nHowToOpenFile, LPCSTR pszFullpath, LPVOID *ppObj );

Parameters

nHowToOpenFile

Specifies how the source file is to be opened. It is one of the following values:

Value Description
PF_OPENFLAT Open as a flat file.
PF_OPENCOMPOUND Open as an OLE compound file. Note that Windows CE does not support compound files.

pszFullpath

Pointer to the null-terminated string that contains the name of the file to open to override the default destination file name. If this parameter is NULL, the default destination file name will be used.

ppObj

Pointer to an LPVOID variable that receives an IStream pointer if nHowToOpenFile is PF_OPENFLAT, or an IStorage pointer if nHowToOpenFile is PF_OPENCOMPOUND. This object must be released using the IPegasusFileFilterSite::CloseDestinationFile method before returning to H/PC Explorer.

Return Values

NOERROR indicates success. An HRESULT_FROM_WIN32 error value indicates failure.

Remarks

The default destination file name and path are specified in the PFF_DESTINATIONFILE structure that is passed in to the call to IPegasusFileFilter::NextConvertFile. The default path is temporary and is managed by H/PC Explorer. For example, if the user drags a bitmap file named Tmp.bmp from the desktop computer to the H/PC, the default destination file name is Tmp.2bp.

The following code example shows how the destination file can be modified when the file filter’s IPegasusFileFilter::NextConvertFile method calls the IPegasusFileFilterSite::OpenDestinationFile method.

// Filter and copy Tmp.bmp on desktop computer to Tmp1.2bp on Windows CE–based device
PFF_DESTINATIONFILE *pdf;
IStream *pstmDst;         // Open the destination file as a stream
TCHAR szBuf[80];

lstrcpy(szBuf, pdf->szPath);        // Use default path …
lstrcat(szBuf, TEXT("TMP1.2bp") );  // … but modify the file name

hres = pffs->OpenDestinationFile(PF_OPENFLAT, szBuf, (LPVOID*)&pstmDst);

In this example, note that the path to the directory containing the temporary destination was preserved. The reason is that, after the file filter conversion is complete—that is, NextConvertFile has returned ERROR_NO_MORE_ITEMS—H/PC Explorer looks in szPath and copies all files, regardless of file or extension name, to the target folder, as directed by the user.

The temporary destination file path must be located on the desktop computer, but the path can be modified as desired.

Note that OpenDestinationFile can be called only once within a specified call to IPegasusFileFilter::NextConvertFile.

See Also

IPegasusFileFilterSite::CloseDestinationFile