A new format code %cd (Common Dialog) has been added to the latest release. This provides an alternative to calling routines such as get_filtered_file@. The following sample code illustrates how it works.
winapp
module mm
use clrwin
integer(7) hwnd
contains
integer function openfiles()
integer,parameter:: MAXFILES = 10
character(80) fileName(MAXFILES) !Multi-selection
character(80) shortFileName
character(80) initialDir
character(256) dir
fileName = ' '
initialDir = 'C:\techsupport'
dir = ' '
iw = winio@('%cd[hwndowner]&', hwnd)
iw = winio@('%cd[title='Open Fortran files']&')
iw = winio@('%cd[maxFiles]&', MAXFILES) !Multi-selection
iw = winio@('%cd[file]&',filename)
iw = winio@('%cd[rootDir]&', dir) !Multi-selection
iw = winio@('%cd[shortFile]&', shortFileName)
iw = winio@('%cd[initialDir]&',initialDir)
iw = winio@('%cd[filter='Fortran files|*.f95;*.for']&')
iw = winio@('%cd[filter='All files (*.*)']&')
iw = winio@('%cd')
if(iw /= 0)then
write(10,*) trim(dir)
do i = 1, iw
write(10,*) trim(fileName(i))
end do
endif
openfiles = 2
end function
integer function saveas()
character(256) fileName
character(80) initialDir
fileName = 'test.f95'
initialDir = 'C:\techsupport'
iw = winio@('%cd[saving]&')
iw = winio@('%cd[title='Save Fortran file as']&')
iw = winio@('%cd[file]&',filename)
iw = winio@('%cd[initialDir]&',initialDir)
iw = winio@('%cd[filter='Fortran files|*.f95;*.for']&')
iw = winio@('%cd[filter='All files (*.*)']&')
iw = winio@('%cd')
if(iw /= 0)then
write(10,*) trim(fileName)
endif
saveas = 2
end function
end module
program main
use mm
iw = winio@('%^bb[Open]&',openfiles)
iw = winio@(' %^bb[Save]&',saveas)
iw = winio@('%ff%nl%30.10cw[border,local_font]&',10)
iw = winio@('%hw', hwnd)
end program
resources
1 24 default.manifest