FoxTools
FoxTools.FLL is a dynamic link library (DLL) that has been specially compiled to access the Visual FoxPro API. (For information on creating FLL files, see "Creating a Basic FLL Library" in the VFP Help). It includes some useful utility functions. Check out HOME() + "\TOOLS\FOXTOOLS.CHM" for additional details.Starting in Visual FoxPro 6.0, many of these functions have been incorporated directly into the language and no longer require the FLL to be loaded. These include: AddBS(), DefaultExt(), DriveType(), ForceExt(), ForcePath(), and the entire set of Just* functions. VFP 7 includes replacements for the Words() and WordNum() functions. However, FoxTools still contains several functions that make it useful, and we include this reference as an aid to those functions as well as to developers unfamiliar with FoxTools who need to maintain code from an older version.Registering and Using DLL Functions: RegFn(), RegFn32(), CallFn()
Two functions within FoxTools allow Visual FoxPro applications to access and call functions built into dynamic link libraries (DLLs). The functions called this way may be part of the Windows native API, or they may be supplied by a third party. Any function that can operate when supplied with character and numeric parameters (structures cannot be created and passed from Visual FoxPro) can be run this way.
Usage |
nFuncHandle = RegFn( cFuncName, cParamTypes, cRetType, cLocation ) nFuncHandle = RegFn32( cFuncName, cParamTypes, cRetType, cLocation ) |
Parameter |
Value |
Meaning |
cFuncName |
Character |
The name of the function. Note that many function names are case-sensitive. |
cParamTypes |
Character |
A list of the type of parameters accepted by the
function, in the order they must be supplied. Parameters
which are to be passed by reference need to be preceded
with an "@" symbol. Acceptable types are: |
cRetType |
Character |
A single character, describing the type of the return value of the function. |
cLocation |
Character |
The name of the DLL containing the function. If the function is built into the core Windows API, WIN32API can be specified instead, which allows the same code to run on different Windows installations. |
Usage |
RetVal = CallFn( nFuncHandle, Param1, Param2, ... ) |
Example |
* Resource. PRG - Displays free system resources SET LIBRARY TO home()+"FOXTOOLS" ADDITIVE nGFSR = RegFn('GetFreeSystemResources', "I", "I", "USER") ? "System Resources ", CallFn(nGFSR,0) ? "GDI Resources", CallFn(nGFSR,1) ? "User Resources", CallFn(nGFSR,2) |
File Functions
These functions modify a supplied drive, path, file name and extension to return only a portion of the supplied information or force a specific format. Almost all of these functions were added to the language in VFP 6. In the following and the other tables in this topic, those functions included directly within VFP are marked with an asterisk.
Function |
Parameters |
Purpose |
AddBS* |
cPathAndFile |
Returns the string with an ending backslash, if one isn't already present. |
CleanPath |
cPathAndFile |
Makes a best guess at the correct path and file name, removing invalid characters. |
DefaultExt* |
cPathAndFile, cExt |
Appends file extension cExt to cPathAndFile, if no extension is present. |
ForceExt* |
cPathAndFile, cExt |
Forces (appends or replaces) the specified extension onto the file name. |
ForcePath* |
cPathAndFile, cPath |
Forces (prepends or replaces) the specified path onto the file name. |
JustDrive* |
cPathAndFile |
Returns just the drive letter. |
JustExt* |
cPathAndFile |
Returns just the extension. |
JustFName* |
cPathAndFile |
Returns the file name with extension. |
JustPath* |
cPathAndFile |
Returns the path, with drive if supplied. |
JustStem* |
cPathAndFile |
Returns the file name without a path or extension. |
ValidPath |
cPathAndFile |
Determines whether a drive, path, file name and extension could be valid, following the rules of DOS file and path naming restrictions. Does not test for the existence of the path or file. Does not work with operating systems that support spaces in path names. |
Clipboard Functions
These functions provide access to the Windows clipboard, to determine the format of the information saved there and manipulate it. Use these functions to examine the contents of the clipboard and request the data in a specific format, or to register the format your application uses to post data onto the clipboard. These can be handy especially if you are using Fpole.DLL to transfer data to and from your application.
Function |
Parameters |
Purpose |
CloseClip |
none |
Closes the handle opened with OpenClip(). |
CountClipF |
none |
Returns the number of different formats in which the information on the clipboard may be requested. |
EmptyClip |
none |
Empties the clipboard. |
EnumClipFm |
nIndex |
Returns a number corresponding to the format in which the clipboard contents may be requested. See the Windows SDK documentation (WinUser.H) for details. |
GetClipDat |
nFormat |
Retrieves a handle to the current clipboard data in the format specified by nFormat. |
GetClipFmt |
nFormat |
This is supposed to retrieve a custom clipboard format name, but it is way too deep into the weird Windows way for us to follow. If you really need to use this function, we recommend you plow through the Win32 SDK for help. |
IsClipFmt |
nFormat |
Returns a logical response to the query of whether the clipboard contents can be rendered in the specified format. |
OpenClip |
nWndHandle |
Opens the clipboard for manipulation by the other functions listed here. We recommend passing MainHwnd() as the argument. |
RegClipFmt |
cFormatName |
Allows you to register a custom clipboard format, use it to render data into the clipboard and later extract it. |
SetClipDat |
nFormat, cData |
Allows storage of data to the clipboard in the format specified. |
String Functions
Functions for doing some useful things with string manipulation. Two of these functions were added to the core product in VFP 7, though their names were changed (to protect the innocent?) in the process.
Function |
Parameters |
Purpose |
NextWord |
cText, nPosition |
Returns the first word or word fragment starting at position nPosition in the supplied character string or memo field, optionally ending at the specified word delimiters (in addition to space and tab). |
Reduce |
cString |
This function is documented as a means to replace repeated occurrences of cCharacter in cString with a single occurrence. It will, as long as cCharacter is a space (or omitted and allowed to default to a space—also undocumented). If it is any other character, all occurrences of that character are obliterated and replaced with spaces. Blech. You can write better. |
StrFilter |
cString1, cString2 |
Removes all the characters from cString1 not in cString2. We can do the same thing with STRTRAN() or SYS(15), so we see no particular advantage to this function. |
WordNum* |
cText, nIndex |
Returns word number nIndex from the supplied character string or memo field. Starting in VFP 7, you can use the native GetWordNum() function instead. |
Words* |
cText |
Returns the number of words in the supplied text. Starting in VFP 7, you can use the native GetWordCount() function instead. |
FoxPro API Functions
These functions allow access to the internal editing and Windows functions of the Visual FoxPro editor. They start with _ED and _W and are documented, not in FoxTools' Help file, but rather in the main Help file supplied with FoxPro.Miscellaneous Functions
A plethora of other functions got tossed into FoxTools, because someone needed them or asked for them.
Function |
Parameters |
Purpose |
DriveType* |
cDriveLetter |
There's one difference between the native VFP command and the FoxTools function for earlier VFP versions: If the drive does not exist, VFP 5 and earlier return 0. VFP 6 and later versions return 1. In all other cases, both functions return the type of drive specified: 2=diskette, 3=hard drive, 4=network or removable, 5=CD-ROM, 6=RAM disk. |
FoxToolVer |
none |
Returns the version of FoxTools, "3.12" for Visual FoxPro 3.0b, and "6.00" for VFP 6.0 and later. |
GetFileVersion |
cFileName, @ArrayName |
Introduced in VFP 5, superseded by the more useful and native AGetFileVersion() in VFP 6, this function returns version information for a file. |
GetProStrg |
cSection, |
Equivalent of Windows API GetProfileString. See the entry DECLARE-DLL for a detailed study of this function. |
MainHwnd |
none |
Returns the window handle of the main FoxPro window required by many Windows API functions. Starting in VFP 7, you can use the hWnd property of _VFP. |
MkDir |
cDirectory |
Creates a directory. "Included for backward compatibility"—use the Visual FoxPro MD command instead. |
MsgBox |
*numerous* |
See the FoxTools documentation for all the parameter variations. Also, see the MessageBox() entry in the Reference section for an explanation of when to use this function rather than MessageBox(), and a description of the undocumented SYSTEMMODAL option. |
PutProStrg |
cSection, cEntry, cValue |
Writes an entry to Win.INI in the format cEntry=cValue. See the discussion in DECLARE-DLL for good reasons not to use this function. |
RGBComp |
nRGBNumber, @nRedColor, @nGreenColor, @nBlueColor |
Returns the values of the three Red, Green and Blue colors from a single color number you get back from a function like GetColor(). |
RmDir |
cDirectory |
Removes a directory. "Included for backward compatibility"—use the Visual FoxPro RD command instead. |
Example |
? FoxToolVer() && Returns "6.0" * Throw some text into the clipboard and see in what formats * it can be pasted into another application. _CLIPTEXT = "Hey!" NOTE: The results you see will vary by platform, but these ; should give you an idea of what to expect. ? OpenClip(0) && returns .T. ? CountClipF() && returns 3 (formats) ? EnumClipFm(0) && returns 1 (CF_TEXT) ? EnumClipFm(1) && returns 16 (CF_LOCALE) ? EnumClipFm(16) && returns 7 (CF_OEMTEXT) ? CloseClip() && returns T. ? Reduce("1 2 3") && returns "1 2 3" (single spaces) |