03-19-2009, 6:04
|
JezzerP

Joined on 05-22-2006
York, UK
Posts 22
|
Re: LDialogFile::DoModalSave - Can't seem to set file filters
|
 
 
|
|
|
Here's what works for me. Obviously the CLeadToolsUtils::Try() function is one of our own, but you should get the gist of what I'm doing.
try { LDialogFile DlgFile; DlgFile.SetBitmap (pBitmap); CLeadToolsUtils::Try(LDialogFile::Initialize(0));
SAVEDLGPARAMS DlgParams ; OPENFILENAMEW OpenFileName ; memset ( &DlgParams, 0, sizeof ( SAVEDLGPARAMS ) ) ; OpenFileName.lStructSize = sizeof ( OPENFILENAMEW ) ; OpenFileName.lpstrInitialDir = NULL; OpenFileName.nFilterIndex = 0 ;
// Set up the file format subformat arrays FILESAVEFORMATBPP jpgFSFBPP[1]; jpgFSFBPP[0].uSubFormats = DLG_FF_SAVE_SUB_JPEG24_YUV_444; jpgFSFBPP[0].nFormatBpp = 24; jpgFSFBPP[0].uStructSize = sizeof(FILESAVEFORMATBPP);
FILESAVEFORMATBPP pngFSFBPP[1]; pngFSFBPP[0].uSubFormats = 0; pngFSFBPP[0].nFormatBpp = 24; pngFSFBPP[0].uStructSize = sizeof(FILESAVEFORMATBPP);
FILESAVEFORMATBPP bmpFSFBPP[1]; bmpFSFBPP[0].uSubFormats = 0; bmpFSFBPP[0].nFormatBpp = 24; bmpFSFBPP[0].uStructSize = sizeof(FILESAVEFORMATBPP);
FILESAVEFORMATBPP pcxFSFBPP[1]; pcxFSFBPP[0].uSubFormats = 0; pcxFSFBPP[0].nFormatBpp = 24; pcxFSFBPP[0].uStructSize = sizeof(FILESAVEFORMATBPP);
FILESAVEFORMATBPP tiffFSFBPP[1]; tiffFSFBPP[0].uSubFormats = DLG_FF_SAVE_SUB_TIFF24_UNCOMPRESSEDRGB; tiffFSFBPP[0].nFormatBpp = 24; tiffFSFBPP[0].uStructSize = sizeof(FILESAVEFORMATBPP);
// Limit the filter to bitmap, gif, cmp and jpg FILESAVEFORMAT fsf[5]; fsf[0].nFormat = DLG_FF_SAVE_JPEG; fsf[0].uStructSize = sizeof(FILESAVEFORMAT); fsf[0].nBppCount = 2; fsf[0].pFileSaveFormatBpp = jpgFSFBPP; fsf[1].nFormat = DLG_FF_SAVE_PNG; fsf[1].uStructSize = sizeof(FILESAVEFORMAT); fsf[1].nBppCount = 1; fsf[1].pFileSaveFormatBpp = pngFSFBPP; fsf[2].nFormat = DLG_FF_SAVE_TIFF; fsf[2].uStructSize = sizeof(FILESAVEFORMAT); fsf[2].nBppCount = 1; fsf[2].pFileSaveFormatBpp = tiffFSFBPP; fsf[3].nFormat = DLG_FF_SAVE_BMP; fsf[3].uStructSize = sizeof(FILESAVEFORMAT); fsf[3].nBppCount = 1; fsf[3].pFileSaveFormatBpp = bmpFSFBPP; fsf[4].nFormat = DLG_FF_SAVE_PCX; fsf[4].uStructSize = sizeof(FILESAVEFORMAT); fsf[4].nBppCount = 1; fsf[4].pFileSaveFormatBpp = pcxFSFBPP;
DlgParams.uFileFormatsCount = 5; DlgParams.pFileFormats = fsf; DlgParams.uStructSize = sizeof (SAVEDLGPARAMS) ; DlgParams.nQFactor = 2 ; DlgParams.nPageNumber = 1 ; DlgParams.uSaveMulti = MULTIPAGE_OPERATION_REPLACE ; DlgParams.uDlgFlags = DLG_SAVE_SHOW_FILEOPTIONS_PROGRESSIVE | DLG_SAVE_SHOW_FILEOPTIONS_MULTIPAGE | DLG_SAVE_SHOW_FILEOPTIONS_STAMP | DLG_SAVE_SHOW_FILEOPTIONS_QFACTOR | DLG_SAVE_SHOW_FILEOPTIONS_J2KOPTIONS | DLG_SAVE_SHOW_FILEOPTIONS_BASICJ2KOPTIONS ; DlgFile.EnableCallBack (FALSE); DlgFile.EnableAutoProcess(TRUE); CLeadToolsUtils::Try(DlgFile.SetSaveParams (&DlgParams));
// Set the initial folder CFolderManager fmWell(pszWellNameOrId); CWFilename sfDefault = fmWell.GetWellImagesFolder();
sfDefault.SetElements(sfChartName, WFName); sfDefault.SetElements(_T("*.jpg"), WFExt); sfDefault.MakeNextAvailable();
CLeadToolsUtils::Try(DlgFile.SetFileName(sfDefault.GetBuffer(_MAX_PATH)));
sfDefault.ReleaseBuffer();
CLeadToolsUtils::Try(DlgFile.DoModalSave(pParent->GetSafeHwnd()));
// Gets the updated values for the structure CLeadToolsUtils::Try(DlgFile.GetSaveParams(&DlgParams, sizeof(DlgParams)));
DlgFile.GetFileName(sfImageNameGiven.GetBuffer(_MAX_PATH), _MAX_PATH); sfImageNameGiven.ReleaseBuffer();
CLeadToolsUtils::Try(LDialogFile::Free());
[:)]
|
|
|
|
|
Report
|
|
|
|