Закрывает заданное окно редактирования, а также отображенный в нем файл.
int _EdCloseFile(WHANDLE wh, int option) WHANDLE wh; /* Дескриптор окна редактирования. */ int option; /* Опция закрытия. */ |
Примечания
Параметр option может принимать одно из следующих значений:
| int | Результат |
|---|---|
|
0 |
Немедленное сохранение. |
|
1 |
Сохранение после подтверждения через диалоговое окно. |
|
2 |
Открывает диалоговое окно Save As. |
_EdCloseFile( ) возвращает одно из следующих значений:
| int | Смысл |
|---|---|
|
1 |
Отмена без сохранения файла. |
|
0 |
Файл сохранен и закрыт. |
|
- 1 |
Изменения аннулированы, файл закрыт. |
Для получения дополнительной информации о том, как создавать библиотеку API и интегрировать её в Visual FoxPro, смотрите Доступ к API Visual FoxPro.
Пример
В следующем примере открывается для редактирования заданный параметром файл, в нем удаляется символ, и сеанс редактирования трижды закрывается. В первый раз вызывается _EdCloseFile( ) с опцией немедленного сохранения, во второй раз - с опцией сохранения через диалоговое окно и в третий раз - с опцией диалогового окна Save As. Каждый раз на экран выводится значение, возвращаемое программой _EdCloseFile( ).
Код Visual FoxPro
Copy Code | |
|---|---|
SET LIBRARY TO EDCLOSE
= EDCLOSE("x") | |
Код C
Copy 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
}; | |
Смотрите также
c Microsoft Corporation. All rights reserved. Microsoft is not reponsible for the contents of the translated help topics.