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-tp23799842p23806673.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

Reply via email to