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