Freigeben über


_EdCloseFile( ), API-Bibliotheksroutine

Schließt sowohl das angegebene Bearbeitungsfenster als auch die in diesem Fenster angezeigte Datei.

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

Hinweise

Der Parameter Option kann einen der folgenden Werte annehmen:

Werte des Parameters "Option"

Ganze Zahl Aktion
0 Sofort speichern.
1 Nach Bestätigung durch Dialogfeld speichern.
2 Dialogfeld Speichern unter öffnen.

_EdCloseFile( ) gibt einen der folgenden Werte zurück:

Rückgabewerte _EdCloseFile( )

Ganze Zahl Bedeutung
1 Abbrechen ohne Speichern der Datei.
0 Datei speichern und schließen.
– 1 Änderungen ignorieren und Datei schließen.

Weitere Informationen zum Erstellen einer API-Bibliothek und ihrer Integration in Visual FoxPro finden Sie unter Zugreifen auf die Visual FoxPro-API.

Beispiel

Im folgenden Beispiel wird eine einzelne, durch einen Parameter angegebene Datei dreimal zum Bearbeiten geöffnet, ein Zeichen wird gelöscht, und die Bearbeitungssitzung wird geschlossen. Beim ersten Mal ruft die Routine _EdCloseFile( ) mit der Option "Sofort speichern" auf, beim zweiten Mal mit der Option "Speichern nach Dialogfeld" und beim dritten Mal mit der Option "Dialogfeld Speichern unter öffnen". Die Routine zeigt den Rückgabewert von _EdCloseFile( ) jedes Mal an.

Visual FoxPro-Code

SET LIBRARY TO EDCLOSE 
= EDCLOSE("x")

C-Code

#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
};

Siehe auch

_EdOpenFile( ), API-Bibliotheksroutine | _EdRevert( ), API-Bibliotheksroutine | _EdSave( ), API-Bibliotheksroutine | _EdSelect( ), API-Bibliotheksroutine