_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)