_EdGetEnv() предоставляет информацию о среде редактора в *EDENV.
int _EdGetEnv(WHANDLE wh, *EDENV theEdEnv) WHANDLE wh; /* Дескриптор окна редактирования. */ *EDENV theEdEnv; /* Установки среды. */ |
Примечания
Ниже перечислена структура *EDENV.
Замечание |
|---|
|
В комментариях, приведенных ниже, (R) указывает, что этот член имеет признак "read-only" и не может быть установлен с помощью _EdSetEnv(). (B) указывает, что этот член может принимать одно из двух логических значений: 1 (True) или 0 (False). |
Скопировать
код | |
|---|---|
typedef struct
{
char filename[MAXFILENAME]; // (R)
EDPOS length; // # байт текста. (R)
unsigned short lenLimit; // Максимально допустимая длина.
0 = infinite.
unsigned short dirty, // Файл был изменен?
(R, B)
autoIndent, // автоприжим? (B)
backup, // Сделать резервную копию файла? (B)
addLineFeeds, // Добавить перевод строки при сохранении? (B)
autoCompile, // Должны мы автоматически компилировать эту вещь?
(B)
addCtrlZ, // Добавить в конец файла ctrl-z? (B)
savePrefs, // Сохранить предустановки редактирования? (B)
dragAndDrop, // Позволить drag-and-drop. (B)
readOnly, // 0 = редактируемый, 1 = нередактируемый r/o,
// 2 = file is r/w, opened r/o,
// 3 = file is r/o, opened r/o. (R)
status, // Отобразить полоску статуса? (B)
lockPrefs, // Возможна перепись предустановок? (B)
insertMode; // (B)
short wrap; // If < 0, новая строка только при Return.
EDPOS selStart; // Начала выборки. (R)
EDPOS selEnd; // Конец выборки. (R)
EDPOS selAnchor; // Точка якоря выборки. (R)
short justMode; // Прижим (0 = слеваt, 1 =
справа, 2 = по центру).
short tabWidth; // Размер табуляции в пробелах.
char fontName[MAXFONTNAME];
short fontSize;
short fontStyle; // 0 = обычный, 1 = жирный, 2 =
курсив, 3 = жирный курсив.
short kind; // Вид сессии редактирования (R);
// EDCOMMAND, EDPROGRAM, etc.
} EDENV; | |
Если вызвана из командной сессии или сессии редактирования, то возвращает 1, в противном случае возвращается 0.
Для получения более подробной информации о том, как создать библиотеу API и интегрировать ее с Visual FoxPro, смотрите описание Доступ к Visual FoxPro API.
Пример
Приведенный ниже пример открывает сессию редактирования файла, указанного в параметре и отображает каждое поле структуры EDENV для этого файла, которое возвращается с помощью _EdGetEnv().
Код
Visual FoxPro
Скопировать
код | |
|---|---|
SET LIBRARY TO EDGETENV
= EDGETENV("x") | |
Код
C
Скопировать
код | |
|---|---|
#include <pro_ext.h>
void putLong(unsigned long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 6;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDENV EdEnv;
EDPOS edpos;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
_EdGetEnv(wh, &EdEnv);
_PutStr("\nfilename: "); _PutStr(EdEnv.filename);
_PutStr("\nlength: "); putLong(EdEnv.length);
_PutStr("\nlenLimit: "); putLong(EdEnv.lenLimit);
_PutStr("\ndirty: "); putLong(EdEnv.dirty);
_PutStr("\nautoIndent: "); putLong(EdEnv.autoIndent);
_PutStr("\nbackup: "); putLong(EdEnv.backup);
_PutStr("\naddLineFeeds: "); putLong(EdEnv.addLineFeeds);
_PutStr("\nautoCompile: "); putLong(EdEnv.autoCompile);
_PutStr("\naddCtrlZ: "); putLong(EdEnv.addCtrlZ);
_PutStr("\nsavePrefs: "); putLong(EdEnv.savePrefs);
_PutStr("\ndragAndDrop: "); putLong(EdEnv.dragAndDrop);
_PutStr("\nreadOnly: "); putLong(EdEnv.readOnly);
_PutStr("\nstatus: "); putLong(EdEnv.status);
_PutStr("\nlockPrefs: "); putLong(EdEnv.lockPrefs);
_PutStr("\ninsertMode: "); putLong(EdEnv.insertMode);
_PutStr("\nwrap: "); putLong(EdEnv.wrap);
_PutStr("\nselStart: "); putLong(EdEnv.selStart);
_PutStr("\nselEnd: "); putLong(EdEnv.selEnd);
_PutStr("\nselAnchor: "); putLong(EdEnv.selAnchor);
_PutStr("\njustMode: "); putLong(EdEnv.justMode);
_PutStr("\ntabWidth: "); putLong(EdEnv.tabWidth);
_PutStr("\nfontName: "); _PutStr(EdEnv.fontName);
_PutStr("\nfontSize: "); putLong(EdEnv.fontSize);
_PutStr("\nfontStyle: "); putLong(EdEnv.fontStyle);
_PutStr("\nkind: "); putLong(EdEnv.kind);
}
FoxInfo myFoxInfo[] = {
{"EDGETENV", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
}; | |
Смотрите
также
© Microsoft Corporation. All rights reserved.
Перевод выполнен JS.
Замечание