Freigeben über


_EdGetEnv( ), API-Bibliotheksroutine

_EdGetEnv( ) stellt die Editorumgebungsdaten in *EDENV zur Verfügung.

int _EdGetEnv(WHANDLE wh, *EDENV theEdEnv)
WHANDLE wh;            /* Handle of editing window. */
*EDENV theEdEnv;         /* Environment settings. */

Hinweise

Die Struktur von *EDENV ist weiter unten aufgelistet.

Anmerkung   In den weiter unten folgenden Kommentaren zeigt ein (R) an, dass ein Element schreibgeschützt (read-only) ist und nicht mit _EdSetEnv( ) festgelegt werden kann. Ein (B) zeigt an, dass das betreffende Ereignis einen von zwei Booleschen Werten annimmt: 1 (Wahr) oder 0 (Falsch).

typedef struct
{
   char            filename[MAXFILENAME];   // (R)
   EDPOS         length;         // # of bytes in text. (R)
   unsigned short   lenLimit;         // Max allowable length.
 0 = infinite.

   unsigned short   dirty,            // Has the file been changed?
 (R, B)
                  autoIndent,      // Auto indent? (B)
                  backup,         // Make backup files? (B)
                  addLineFeeds,   // Add line feeds when saving? (B)
                  autoCompile,      // Shall we auto compile this thing?
 (B)
                  addCtrlZ,         // Add end of file ctrl-z? (B)
                  savePrefs,      // Save edit preferences? (B)
                  dragAndDrop,   // Allow drag-and-drop. (B)
                  readOnly,         // 0 = not r/o, 1 = file is r/o,
                                 // 2 = file is r/w, opened r/o,
                                 // 3 = file is r/o, opened r/o. (R)
                  status,            // Display status bar? (B)
                  lockPrefs,         // Can update the preferences ? (B)
                  insertMode;      // (B)

   short            wrap;            // If < 0, new line at Return only.
   EDPOS         selStart;         // Selection start. (R)
   EDPOS         selEnd;         // Selection end. (R)
   EDPOS         selAnchor;      // Selection anchor point. (R)
   short            justMode;      // Justification (0 = left, 1 =
 right, 2 = center).
   short            tabWidth;      // TAB size in spaces.

   char            fontName[MAXFONTNAME];
   short            fontSize;
   short            fontStyle;      // 0 = plain, 1 = bold, 2 =
 italic, 3 = bold italic.
   short            kind;         // Kind of editor session (R);
                              // EDCOMMAND, EDPROGRAM, etc.
} EDENV;

Der Wert 1 wird zurückgegeben, wenn der Aufruf in einem Befehl oder einer Editorsitzung erfolgt ist. Andernfalls wird 0 zurückgegeben.

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 Bearbeitungssitzung für eine durch einen Parameter angegebene Datei geöffnet. Jedes Feld der EDENV-Struktur für diese Datei wird entsprechend den von _EdGetEnv( ) zurückgegebenen Werten angezeigt.

Visual FoxPro-Code

SET LIBRARY TO EDGETENV
= EDGETENV("x")

C-Code

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

Siehe auch

_EdLastError( ), API-Bibliotheksroutine | _EdSetEnv( ), API-Bibliotheksroutine | _EdGetLineNum( ), API-Bibliotheksroutine | _EdGetChar( ), API-Bibliotheksroutine