_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