The ICeFileFilterSite::OpenDestinationFile method is used by a file filter to open a destination file.
STDMETHODIMP ICeFileFilterSite::OpenDestinationFile(
int nHowToOpenFile,
LPCSTR pszFullpath,
LPVOID *ppObj
);
Header file: | Replfilt.h |
Platforms: | H/PC |
Windows CE versions: | 2.0 and later |
If OpenDestinationFile fails, the return value is an HRESULT_FROM_WIN32 error value.
The default destination file name and path are specified in the CFF_DESTINATIONFILE structure that is passed in to the call to ICeFileFilter::NextConvertFile. The default path is a temporary path managed by Windows CE Services. For example, if the user drags a bitmap file named Tmp.bmp from the desktop PC to the mobile device, the default destination file name is Tmp.2bp.
When the file filter's ICeFileFilter::NextConvertFile method calls the ICeFileFilterSite::OpenDestinationFile method, the destination file can be modified, as shown in the following code fragment:
// Filter and copy Tmp.bmp on desktop to Tmp1.2bp on Windows CE device
CFF_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 = cffs->OpenDestinationFile(PF_OPENFLAT, szBuf, (LPVOID*)&pstmDst);
In this example, note that the path to the directory that contains 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), Windows CE Services 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 PC, but the path can be modified as desired.
Note that OpenDestinationFile can be called only once within a given call to ICeFileFilter::NextConvertFile.