Character*1024 Function myGetSaveFileName(hTitle, hFilter, DefaultDir, DefaultFileName, hFlags) use dfwinty use dfwin Character*(*) :: hTitle,hFilter,DefaultDir,DefaultFileName Integer :: hFlags Integer rc, sLoc Character*1024 szFile,tFilter type (T_OPENFILENAME) :: tSF Integer*4 myHWnd call ZeroMemory(Loc(tSF),Sizeof(tSF)) szFile(1:Len_Trim(DefaultFileName)) = Trim(DefaultFileName) hFlags=ior(hFlags, OFN_OVERWRITEPROMPT) tFilter=hFilter sLoc=Scan(tFilter,Char(0))+1 tFilter=tFilter(sLoc:Len(tFilter)) sLoc=Scan(tFilter,Char(0)) tFilter=tFilter(1:sLoc) tSF%lStructSize = Sizeof(tSF) tSF%hwndOwner = myHWnd() tSF%lpstrFile = Loc(szFile) tSF%nMaxFile = Len_Trim(szFile) tSF%lpstrFilter = Loc(hFilter) tSF%nFilterIndex = 1 tSF%lpstrTitle = Loc(hTitle) tSF%nMaxFileTitle = 0 tSF%lpstrInitialDir = Loc(DefaultDir) tSF%Flags = hFlags tSF%lpstrDefExt = Loc(tFilter) rc = GetSaveFileName(tSF) If (rc .ne. 0) Then myGetSaveFileName = szFile(1:scan(szFile,char(0))-1) else myGetSaveFileName = '' End If End Function Character*1024 Function myGetOpenFileName(hTitle, hFilter, DefaultDir, DefaultFileName, hFlags) use dfwinty use dfwin Character*(*) hTitle,hFilter,DefaultDir,DefaultFileName Integer hFlags,hWnd Integer rc Character*1024 szFile type (T_OPENFILENAME) :: tOF Integer*4 myHWnd call ZeroMemory(Loc(tOF),Sizeof(tOF)) szFile(1:Len_Trim(DefaultFileName)) = Trim(DefaultFileName) tOF%lStructSize = Sizeof(tOF) tOF%hwndOwner = myHWnd() tOF%lpstrFile = Loc(szFile) tOF%nMaxFile = Len_Trim(szFile) tOF%lpstrFilter = Loc(hFilter) tOF%nFilterIndex = 1 tOF%lpstrTitle = Loc(hTitle) tOF%nMaxFileTitle = 0 tOF%lpstrInitialDir = Loc(DefaultDir) tOF%Flags = hFlags rc = GetOpenFileName(tOF) If (rc .ne. 0) Then myGetOpenFileName = szFile(1:scan(szFile,char(0))-1) else myGetOpenFileName = '' End If End Function