* :--------------------------------------- * ------------------------: Copybook for GetOpenFileName * : and GetSaveFileName dialogs. * : * : See the documentation for details. * :--------------------------------------- * * To use: * * COPY WIN32API. * COPY OPENSAVE. * . * . * ------------------------: Load the dialog title and text. * * STRING 'My Open/SaveAs Dialog Title' * LOW-VALUE DELIMITED SIZE INTO OPENSAVE-WINDOW-TITLE. * * ------------------------: Load the default extension of the * : files we're looking for. * * STRING 'INI' DELIMITED SIZE * LOW-VALUE DELIMITED SIZE INTO OPENSAVE-DEFAULT-EXTENSION. * * ------------------------: Set the flag bits by ORing the * : values, giving OPENSAVE-FLAGS; if * : you ADD them, be sure that you do * : not cause a carry, or your flags will * : be incorrect. * * ADD OFN-EXPLORER * OFN-FILEMUSTEXIST * OFN-PATHMUSTEXIST * OFN-HIDEREADONLY * GIVING OPENSAVE-FLAGS. * * ------------------------: Load the window handle of the window * : that will own this dialog; (it's * : passed back by GUI ScreenIO when you * : display a panel). * * MOVE mypanel-HWND TO OPENSAVE-HWNDOWNER. * * ------------------------: Load the size of the CUSTOMFILTER area * : Note: We don't presently use this * : facility... * * MOVE LOW-VALUE TO OPENSAVE-CUSTOMFILTER * OPENSAVE-FILENAME. * * MOVE LENGTH OF OPENSAVE-CUSTOMFILTER * TO OPENSAVE-LENGTH-CUSTFILTER. * * ------------------------: Size of the FILESPEC buffer * * MOVE LENGTH OF OPENSAVE-FILESPEC * TO OPENSAVE-LENGTH-FILESPEC. * * ------------------------: Size of the FILENAME buffer * * MOVE LENGTH OF OPENSAVE-FILENAME * TO OPENSAVE-LENGTH-FILENAME. * * ------------------------: Initial directory * * STRING 'C:\' * LOW-VALUE DELIMITED SIZE INTO OPENSAVE-INITIALDIR. * * ------------------------: Index of the current filter in * : OPENSAVE-INITIALFILTER; in this case, * : it will be "*.ini". * * MOVE 1 TO OPENSAVE-FILTER-INDEX. * * ------------------------: Load pairs of null-terminated strings * : specifying the filter to use: * : * : First element is name of the filter * : Second element is the filter pattern * : Last one is terminated with two nulls. * * STRING * 'Application Profiles (*.INI)' LOW-VALUE '*.ini' LOW-VALUE * 'All Files (*.*)' LOW-VALUE '*.*' LOW-VALUE * LOW-VALUE DELIMITED SIZE INTO OPENSAVE-FILTER. * * ------------------------: Select the API to use: * * SET API-GETOPENFILENAME TO TRUE * * ------------------------: Call the GUI ScreenIO API routine: * * CALL 'GSWINAPI' USING WIN32API-PARMS * OPENSAVE-PARMS * OPENSAVE-INITIALDIR * OPENSAVE-FILTER * OPENSAVE-CUSTOMFILTER * OPENSAVE-FILESPEC * OPENSAVE-FILENAME. * * IF WIN32API-FAILED OR OPENSAVE-FILESPEC NOT > SPACE * do no-file-found * ELSE * process the selected filespec using values below. * * : Offset of file name in FILESPEC area * * OPENSAVE-OFFSET-FILENAME * * : Offset of extension in FILESPEC area * * OPENSAVE-OFFSET-FILEEXT * * : Full path and filespec, followed by * : a LOW-VALUE. If multiple files are * : selected on an open, only the null * : terminated filename and extension * : (no path) follow the first one. * * OPENSAVE-FILESPEC * * : File name and extension * * OPENSAVE-FILENAME * * ---------------------------------------------------------------- * * : Definitions of flag values; not used * : as an argument. 01 OPENSAVE-FLAG-SOURCE. 05 OFN-READONLY PIC S9(9) COMP-5 VALUE H'00001'. 05 OFN-OVERWRITEPROMPT PIC S9(9) COMP-5 VALUE H'00002'. 05 OFN-HIDEREADONLY PIC S9(9) COMP-5 VALUE H'00004'. 05 OFN-NOCHANGEDIR PIC S9(9) COMP-5 VALUE H'00008'. 05 OFN-SHOWHELP PIC S9(9) COMP-5 VALUE H'00010'. 05 OFN-ENABLEHOOK PIC S9(9) COMP-5 VALUE H'00020'. 05 OFN-ENABLETEMPLATE PIC S9(9) COMP-5 VALUE H'00040'. 05 OFN-ENABLETEMPLATEHANDLE PIC S9(9) COMP-5 VALUE H'00080'. 05 OFN-NOVALIDATE PIC S9(9) COMP-5 VALUE H'00100'. 05 OFN-ALLOWMULTISELECT PIC S9(9) COMP-5 VALUE H'00200'. 05 OFN-EXTENSIONDIFFERENT PIC S9(9) COMP-5 VALUE H'00400'. 05 OFN-PATHMUSTEXIST PIC S9(9) COMP-5 VALUE H'00800'. 05 OFN-FILEMUSTEXIST PIC S9(9) COMP-5 VALUE H'01000'. 05 OFN-CREATEPROMPT PIC S9(9) COMP-5 VALUE H'02000'. 05 OFN-SHAREAWARE PIC S9(9) COMP-5 VALUE H'04000'. 05 OFN-NOREADONLYRETURN PIC S9(9) COMP-5 VALUE H'08000'. 05 OFN-NOTESTFILECREATE PIC S9(9) COMP-5 VALUE H'10000'. 05 OFN-NONETWORKBUTTON PIC S9(9) COMP-5 VALUE H'20000'. 05 OFN-NOLONGNAMES PIC S9(9) COMP-5 VALUE H'40000'. 05 OFN-EXPLORER PIC S9(9) COMP-5 VALUE H'80000'. 05 OFN-NODEREFERENCELINKS PIC S9(9) COMP-5 VALUE H'100000'. 05 OFN-LONGNAMES PIC S9(9) COMP-5 VALUE H'200000'. 05 OFN-SHAREFALLTHROUGH PIC S9(9) COMP-5 VALUE 2. 05 OFN-SHARENOWARN PIC S9(9) COMP-5 VALUE 1. 05 OFN-SHAREWARN PIC S9(9) COMP-5 VALUE 0. * 01 OPENSAVE-PARMS VALUE LOW-VALUES. 05 OPENSAVE-WINDOW-TITLE PIC X(255). 05 OPENSAVE-DEFAULT-EXTENSION PIC X(30). 05 OPENSAVE-FLAGS PIC S9(9) COMP-5. 05 OPENSAVE-HWNDOWNER PIC X(4). 05 OPENSAVE-LENGTH-CUSTFILTER PIC S9(9) COMP-5. 05 OPENSAVE-FILTER-INDEX PIC S9(9) COMP-5. 05 OPENSAVE-LENGTH-FILESPEC PIC S9(9) COMP-5. 05 OPENSAVE-LENGTH-FILENAME PIC S9(9) COMP-5. 05 OPENSAVE-OFFSET-FILENAME PIC S9(4) COMP-5. 05 OPENSAVE-OFFSET-FILEEXT PIC S9(4) COMP-5. * * : Initial directory for Open * 01 OPENSAVE-INITIALDIR PIC X(1024) VALUE LOW-VALUES. * : Buffer containing pairs of null- * : terminated strings specifying the * : filter to use; the first element * : is the name of the filter, and the * : second is the filter pattern. The * : last one is terminated with two nulls. * 01 OPENSAVE-FILTER PIC X(1024) VALUE LOW-VALUES. * * : Presently unused; set to LOW-VALUE * 01 OPENSAVE-CUSTOMFILTER PIC X(1024) VALUE LOW-VALUES. * * : Full path and filespec, followed by * : a LOW-VALUE. If multiple files are * : selected on an open, only the null * : terminated filename and extension * : (no path) follow the first one. * 01 OPENSAVE-FILESPEC PIC X(1024) VALUE LOW-VALUES. * * : File name and extension * 01 OPENSAVE-FILENAME PIC X(1024) VALUE LOW-VALUES.