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