Restrictions and Features

Not all GFA-BASIC 32 commands and functions may be used in an editor extension. A GLL differs in quite some ways from a normal GFA-BASIC 32 application. GFA-BASIC 32 applications are constructed around the OLE wrappers for windows, forms and controls. This means that maintaining all GUI items is performed through COM calls. The forms and windows are COM containers for the ActiveX controls provided in the GfaWin23.OCX. The GFA-BASIC 32 application is able to communicate between the COM items through the Sleep command, which is used in any normal program.

The editor extension is an external compiled GFA-BASIC 32 program in a special format. The editor extensions are programmed in GFA-BASIC 32 and make use of many library functions provided by GFA-BASIC 32, but a GLL is not a COM plug-in, it is not COM based. After loading a GLL plug-in it will become part of the IDE, its functions are called from inside the IDE, which is a regular WINAPI program and not a COM program. The IDE has no knowledge what so ever about COM containers and OCXs. As a consequence a GLL cannot use Form, OpenW, Ocx, Sleep, etc. The general rule is: don't use GFA-BASIC 32 GUI commands and don't use GFA-BASIC 32 specific message loops, not even GetEvent in a GLL.

Editor Extensions do not have a data segment, because they are nothing more then a piece of compiled code that is recognized by the IDE. Also, a GLL is not a DLL, it cannot contain data and cannot contain resources. Therefore, Read, Data, Restore, and LabelAddr() are not allowed. Since a GLL has no data section, inline resource files (:Files) are not allowed as well. (There is a workaround to include data in a GLL. By encoding binary data in a MimeEncode$ format, the data can be assigned to a string variable and later decoded.)

Allowed are mostly all other GFA-BASIC 32 functions. You can open files, use the non GUI COM objects App, Screen, Debug, Err, Printer, Collection, and DisAsm. All Windows API functions may be used, there are hardly any limitations.

You can display (test) results using Debug.Print, Trace, Assert, and MsgBox, or by inserting text into program text, as well as by changing the status bar text Gfa_StatusText=.

Simple input for a GLL can take place with Gfa_KeyGet, InputBox, Prompt, or Popup.

This manual contains many examples that clarify the usage of GFA-BASIC 32 statements in GLLs.

{Created by Sjouke Hamstra; Last updated: 12/05/14 by James Gaite}