COMMDLG.C
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:
Windows编程
开发平台:
Visual C++
- /*
- * COMMDLG.C
- *
- * Routines to interface to the COMMDLG library for File Open and
- * File Save/Save As functions.
- *
- * Copyright(c) Microsoft Corp. 1992-1994 All Rights Reserved
- * Win32 version, January 1994
- */
- #include <windows.h>
- #include <commdlg.h>
- #include "cosmo.h"
- /*
- * FSaveOpenDialog
- *
- * Purpose:
- * Invokes the COMMDLG.DLL GetOpenFileName dialog and retrieves
- * a filename for saving or opening.
- *
- * Parameters:
- * hWnd HWND of the owning application.
- * hInst HINSTANCE of the application instance.
- * pszExt LPSTR of the default extension
- * pszFilter LPSTR of the filter desciption.
- * pszFile LPSTR buffer to receive the entered filename.
- * Must be at least CCHPATHMAX long.
- * fOpen BOOL indicating if we want file open or save.
- *
- * Return Value:
- * BOOL TRUE if the function retrieved a filename,
- * FALSE if the user pressed CANCEL.
- */
- BOOL WINAPI FSaveOpenDialog(HWND hWnd, HINSTANCE hInst, LPSTR pszExt
- , LPSTR pszFilter, LPSTR pszFile, LPSTR pszCaption, BOOL fOpen)
- {
- OPENFILENAME ofn;
- char szTitle[CCHFILENAMEMAX];
- char szFilter[80];
- UINT cch1;
- UINT cch2;
- ofn.lStructSize =sizeof(OPENFILENAME);
- ofn.hwndOwner =hWnd;
- ofn.hInstance =hInst;
- ofn.lpstrFilter =szFilter;
- ofn.lpstrCustomFilter=NULL;
- ofn.nMaxCustFilter =0L;
- ofn.nFilterIndex =1L; //We only have 1 extension.
- ofn.lpstrFile =pszFile;
- ofn.nMaxFile =CCHPATHMAX;
- ofn.lpstrFileTitle =(LPSTR)szTitle;
- ofn.nMaxFileTitle =CCHFILENAMEMAX;
- ofn.lpstrInitialDir =NULL;
- ofn.lpstrTitle =pszCaption;
- ofn.Flags =OFN_HIDEREADONLY;
- ofn.nFileOffset =0;
- ofn.nFileExtension =0;
- ofn.lpstrDefExt =pszExt;
- ofn.lCustData =0;
- ofn.lpfnHook =NULL;
- ofn.lpTemplateName =NULL;
- //Modify the flags as appropriate.
- if (fOpen)
- ofn.Flags |= OFN_FILEMUSTEXIST;
- else
- ofn.Flags |= OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT;
- //Build a filter like "pszFilter *.pszExt "
- lstrcpy(szFilter, pszFilter);
- cch1=1+lstrlen(szFilter);
- cch2=wsprintf(pszFile, "*.%s", pszExt); //Initial edit control contents.
- lstrcpy(szFilter+cch1, pszFile); //Append to filter.
- //Add the second null-terminator.
- *(szFilter+cch1+cch2+1)=0;
- return GetOpenFileName(&ofn);
- }