Hello Pritpal and Xavi,
I didn't want to re-invent the wheel :) Actually, I didn't know those
functions.
Thanks a lot for this help.
Again for curiosity, do you have any idea about the differences between BCC
and Mingw? This is purely for academic interest only :)
Regards.
Sudip
Pritpal Bedi wrote:
>
> Hello Sudip
>
>
> Sudip Bhattacharyya wrote:
>>
>> I use following code for Common Dialog boxes. When I call the functon
>> CSaveFile() or COpenFile() compiled with BCC, it gives run-time system
>> error, but runs fine when compiled with Mingw compiler.
>>
>
> Why to reinvent the wheel.
> If it is GTWVG then these two functions are
> already contined in the library.
> Wvt_GetSaveFileName(...)
> Wvt_GetOpenFileName(...)
> with a lot of additional functionality.
>
> /* Borrowed from What32
>
> Wvt_GetOpenFileName( hWnd, @cPath, cTitle, aFilter, nFlags, cInitDir,
> cDefExt, nIndex )
>
> hWnd: Handle to parent window
> cPath: (optional) if OFN_ALLOWMULTISELECT the path is stored
> cTitle: Window Title
> aFilter: Array of Files Types i.e. { {"Data
> Bases","*.dbf"},{"Clipper","*.prg"} }
> nFlags: OFN_* values default to OFN_EXPLORER
> cInitDir: Initial directory
> cDefExt: Default Extension i.e. "DBF"
> nIndex: Index position of types
>
> Returns: If OFN_ALLOWMULTISELECT
> Array of files selected
> else
> FileName.
> endif
> */
> FUNCTION WVT_GetOpenFileName( hWnd, cPath, cTitle, aFilter, nFlags,
> cIniDir, cDefExt, nIndex )
> local aFiles, cRet, cFile, n, x, c := ""
>
> IF aFilter == nil
> aFilter := {}
> END
> IF ValType( aFilter ) == "A"
> FOR n := 1 TO LEN( aFilter )
> c += aFilter[n][1] + chr(0) + aFilter[n][2] + chr(0)
> NEXT
> ENDIF
> if WIN_AND( nFlags,OFN_ALLOWMULTISELECT ) > 0
> cFile := space( 32000 )
> ELSE
> cFile := padr( trim( cPath ), 255, chr( 0 ) )
> END
>
> cRet := WVT__GetOpenFileName( hWnd, @cFile, cTitle, c, nFlags, cIniDir,
> cDefExt, @nIndex )
>
> if WIN_AND( nFlags,OFN_ALLOWMULTISELECT ) > 0
> n := AT( CHR(0)+ CHR(0), cFile )
> cFile := LEFT( cFile,n )
> aFiles := {}
> IF n == 0 /* no double chr(0) user must have pressed cancel */
> RETURN( aFiles )
> END
> x := AT( CHR( 0 ),cFile ) /* fist null */
> cPath := LEFT( cFile,x )
>
> cFile := STRTRAN( cFile,cPath )
> IF !EMPTY( cFile ) /* user selected more than 1 file */
> c := ""
> FOR n := 1 TO LEN( cFile )
> IF SUBSTR( cFile,n,1 ) == CHR( 0 )
> AADD( aFiles,STRTRAN( cPath, CHR( 0 ) ) +"\"+ c )
> c:=""
> LOOP
> END
> c += SUBSTR( cFile,n,1 )
> NEXT
> ELSE
> /*
> cFile:=cPath
> x:=RAT("\",cFile)
> cPath:=LEFT(cFile,x-1)
> */
> aFiles := { STRTRAN( cPath, CHR( 0 ) ) }
> END
> Return( aFiles )
> else
> /* cRet := left( cRet, at( chr( 0 ), cRet ) -1 ) */
>
> end
>
> Return ( cRet )
>
> /*----------------------------------------------------------------------*/
> /*
> Wvt_GetSaveFileName( hWnd, cFile, cTitle, aFilter, nFlags, cInitDir,
> cDefExt, nIndex)
>
> hWnd: Handle to parent window
> cFile: (optional) Default FileName
> cTitle: Window Title
> aFilter: Array of Files Types i.e. { {"Data
> Bases","*.dbf"},{"Clipper","*.prg"} }
> nFlags: OFN_* values default to OFN_EXPLORER
> cInitDir: Initial directory
> cDefExt: Default Extension i.e. "DBF"
> nIndex: Index position of types
>
> Returns: FileName.
> */
>
> FUNCTION WVT_GetSaveFileName( hWnd, cFile, cTitle, aFilter, nFlags,
> cIniDir, cDefExt, nIndex )
> local n,c:=""
>
> IF aFilter == nil
> aFilter := {}
> END
>
> FOR n := 1 TO LEN( aFilter )
> c += aFilter[ n ][ 1 ]+chr( 0 )+aFilter[ n ][ 2 ]+chr( 0 )
> NEXT
> cFile := WVT__GetSaveFileName( hWnd, cFile, cTitle, c, nFlags, cIniDir,
> cDefExt, @nIndex )
>
> Return ( cFile )
>
> /*----------------------------------------------------------------------*/
>
> If want to use with other lib then pull the C sources from wvgutils.c .
>
> Regards
> Pritpal Bedi
>
--
View this message in context:
http://www.nabble.com/Different-Behavior-of-BCC-and-Mingw-tp23799842p23806726.html
Sent from the Harbour - Dev mailing list archive at Nabble.com.
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour