Share via


_EdCloseFile( ) (Rutina de biblioteca API)

Cierra la ventana de edición especificada y la vista de archivo en esta ventana.

int _EdCloseFile(WHANDLE wh, int option)
WHANDLE wh;            /* Handle of editing window. */
int option;                  /* Closing options. */

Observaciones

El parámetro option puede tener uno de los valores siguientes:

Valores del parámetro option

int resultado
0 Guardar inmediatamente.
1 Guardar tras confirmar en el cuadro de diálogo.
2 Abrir el cuadro de diálogo Guardar como.

_EdCloseFile( ) devuelve uno de los siguientes valores:

Valores de retorno de _EdCloseFile( )

int significado
1 Cancela sin guardar el archivo.
0 Guarda y cierra el archivo.
– 1 Descarta los cambios y cierra el archivo.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre para su edición un solo archivo especificado por un parámetro, elimina un carácter y cierra la sesión de edición tres veces. La primera vez, la rutina llama a _EdCloseFile( ) con la opción "Guardar inmediatamente", la segunda vez utiliza la opción "Guardar tras confirmar en el cuadro de diálogo" y la tercera vez utiliza la opción "Abrir el cuadro de diálogo Guardar como". Cada una de las veces, la rutina muestra el valor de retorno de _EdCloseFile( ).

Código Visual FoxPro

SET LIBRARY TO EDCLOSE 
= EDCLOSE("x")

Código C

#include <pro_ext.h>

void putLong(long n)
{
   Value val;

   val.ev_type = 'I';
   val.ev_long = n;
   val.ev_width = 5;

   _PutValue(&val);
}

FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))

   WHANDLE wh;
   int retValue;

   if (!_SetHandSize(parm->p[0].val.ev_handle,
      parm->p[0].val.ev_length+1))
   {
      _Error(182); // "Insufficient memory"
   }
   _HLock(parm->p[0].val.ev_handle);
   pFILENAME[parm->p[0].val.ev_length] = '\0';

   // Open, delete a character, close "save without asking"
   wh = _EdOpenFile(pFILENAME, FO_READWRITE);

   _HUnLock(parm->p[0].val.ev_handle);

   _EdSelect(wh, 0, 1);
   _EdDelete(wh);
   retValue = _EdCloseFile(wh, 0); // save without asking
   _PutStr("\n_EdCloseFile() ="); putLong(retValue);

   // Open, delete a character, close "save with asking"
   _HLock(parm->p[0].val.ev_handle);
   wh = _EdOpenFile(pFILENAME, FO_READWRITE);
   _HUnLock(parm->p[0].val.ev_handle);

   _EdSelect(wh, 0, 1);
   _EdDelete(wh);
   retValue = _EdCloseFile(wh, 1); // save with asking
   _PutStr("\n_EdCloseFile() ="); putLong(retValue);

   // Open, delete a character, close "save as"
   _HLock(parm->p[0].val.ev_handle);
   wh = _EdOpenFile(pFILENAME, FO_READWRITE);
   _HUnLock(parm->p[0].val.ev_handle);

   _EdSelect(wh, 0, 1);
   _EdDelete(wh);
   retValue = _EdCloseFile(wh, 2); // save as
   _PutStr("\n_EdCloseFile() ="); putLong(retValue);
}

FoxInfo myFoxInfo[] = {
   {"EDCLOSE", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
   (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdOpenFile( ) (Rutina de biblioteca API) | _EdRevert( ) (Rutina de biblioteca API) | _EdSave( ) (Rutina de biblioteca API) | _EdSelect( ) (Rutina de biblioteca API)