COMMDLG.C
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /*
  2.  * COMMDLG.C
  3.  *
  4.  * Routines to interface to the COMMDLG library for File Open and
  5.  * File Save/Save As functions.
  6.  *
  7.  * Copyright(c) Microsoft Corp. 1992-1994 All Rights Reserved
  8.  * Win32 version, January 1994
  9.  */
  10. #include <windows.h>
  11. #include <commdlg.h>
  12. #include "cosmo.h"
  13. /*
  14.  * FSaveOpenDialog
  15.  *
  16.  * Purpose:
  17.  *  Invokes the COMMDLG.DLL GetOpenFileName dialog and retrieves
  18.  *  a filename for saving or opening.
  19.  *
  20.  * Parameters:
  21.  *  hWnd            HWND of the owning application.
  22.  *  hInst           HINSTANCE of the application instance.
  23.  *  pszExt          LPSTR of the default extension
  24.  *  pszFilter       LPSTR of the filter desciption.
  25.  *  pszFile         LPSTR buffer to receive the entered filename.
  26.  *                  Must be at least CCHPATHMAX long.
  27.  *  fOpen           BOOL indicating if we want file open or save.
  28.  *
  29.  * Return Value:
  30.  *  BOOL            TRUE if the function retrieved a filename,
  31.  *                  FALSE if the user pressed CANCEL.
  32.  */
  33. BOOL WINAPI FSaveOpenDialog(HWND hWnd, HINSTANCE hInst, LPSTR pszExt
  34.     , LPSTR pszFilter, LPSTR pszFile, LPSTR pszCaption, BOOL fOpen)
  35.     {
  36.     OPENFILENAME    ofn;
  37.     char            szTitle[CCHFILENAMEMAX];
  38.     char            szFilter[80];
  39.     UINT            cch1;
  40.     UINT            cch2;
  41.     ofn.lStructSize      =sizeof(OPENFILENAME);
  42.     ofn.hwndOwner        =hWnd;
  43.     ofn.hInstance        =hInst;
  44.     ofn.lpstrFilter      =szFilter;
  45.     ofn.lpstrCustomFilter=NULL;
  46.     ofn.nMaxCustFilter   =0L;
  47.     ofn.nFilterIndex     =1L;                //We only have 1 extension.
  48.     ofn.lpstrFile        =pszFile;
  49.     ofn.nMaxFile         =CCHPATHMAX;
  50.     ofn.lpstrFileTitle   =(LPSTR)szTitle;
  51.     ofn.nMaxFileTitle    =CCHFILENAMEMAX;
  52.     ofn.lpstrInitialDir  =NULL;
  53.     ofn.lpstrTitle       =pszCaption;
  54.     ofn.Flags            =OFN_HIDEREADONLY;
  55.     ofn.nFileOffset      =0;
  56.     ofn.nFileExtension   =0;
  57.     ofn.lpstrDefExt      =pszExt;
  58.     ofn.lCustData        =0;
  59.     ofn.lpfnHook         =NULL;
  60.     ofn.lpTemplateName   =NULL;
  61.     //Modify the flags as appropriate.
  62.     if (fOpen)
  63.         ofn.Flags        |= OFN_FILEMUSTEXIST;
  64.     else
  65.         ofn.Flags        |= OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT;
  66.     //Build a filter like "pszFilter*.pszExt"
  67.     lstrcpy(szFilter, pszFilter);
  68.     cch1=1+lstrlen(szFilter);
  69.     cch2=wsprintf(pszFile, "*.%s", pszExt);  //Initial edit control contents.
  70.     lstrcpy(szFilter+cch1, pszFile);         //Append to filter.
  71.     //Add the second null-terminator.
  72.     *(szFilter+cch1+cch2+1)=0;
  73.     return GetOpenFileName(&ofn);
  74.     }