_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