What is Magic ?
Magic is a RAD development
tool. Look a the MSE
(Magic Software Enterprises)
web site for more informations and to download a limited edition.
I didn't success in downloading the file !
Try later, the server may have problems or bandwidth limits,
or I was uploading the file.
The file doesn't decompress !
Try downloading later the file. Usually, it's a broken download.
How does subclassing work ?
- The installation must be done in your Magic development folder. So I can
put there the DLLs, modify the Magic.ini
and put the demo files in the GET\ subfolder.
- Use the shortcut created in the GET.DLL for Magic program group. It
set the Magic language as english (in order to the action to be correctly
imported), the mls language to English (Strings are in French).
- Look at this technote
if importation doesn't work.
This functions let make one call (usually at startup)
to change the behavior of Magic controls.
For instance, you can change the caret color or size,
the look of the Magic sliders, or transform buttons
to clocks, hyperlinks, animation, ... based on the
button title. Basically, it's a small program that
interface between users actions (mouse, key, ...)
and the Magic control, and can draw it.
Why use those Magic DLLs ?
Why do not use those Magic DLLs ?
You need them, there is no Magic way to do it.
Your application will be more Windows, will gain
in functionalities, in speed, in stability,
It's a freeware !
There is a bug !
You don't need them.
You may not want to have in your application third party
products, so upgrading will be smoother. But you may
NEED it ! You can limit your use to functions that can
be easily removed (a sample is the dynamic images buttons).
You add something, so it's less stable. But some functions
let you have a more stable application, especially when
replacing DOS call (print_file, dir functions, ...).
It's free !
It's only for Windows. However, the Magic
runtime runs only under Windows, although development
now also runs under Linux.
Yes, there are certainly bugs, especially with
new functionalities, although it's rather stable.
To help me correcting the problem rapidly,
please try to isolate the problem, and if possible provide
a Magic exported task that shows the problem.
Precise you Window version, your Magic version (ie Win95b,
Magic V8.3 SP2, IE 4 instead of Win95 and Magic 8).
You can also look at the know bugs lists.
Magic crashes !
It may be a bug. If the DLL is called directly (not using
one of the provided Magic wrapper), verify spelling,
verify parameters, and verify you have the last DLL version.
This new version doesn't work anymore !
Look at the history, if the function has been modified, then I
certainly have introduced a new bug :-(
Did this DLL change ?
Look at the history, it may have been no modification. But
as it's a package of several Magic DLLs,
the version number is modified for all DLLs, even if they don't have changed.
The LCC-Win32 compiler may also have been upgraded.
Where may I place a Magic DLL ?
You should place a Magic DLL in the Magic folder (the
folder where is mggenw.exe or mgrntw.exe), it is the first
place where Windows will look (I quote from MSDN) :
The system searches for the DLLs in the following locations, in
- The directory that contains the module for the current process.
- The current directory.
- The Windows system directory. The GetSystemDirectory function
retrieves the path of this directory.
- The Windows directory. The GetWindowsDirectory function
retrieves the path of this directory.
- The directories listed in the PATH environment variable.
What GET.DLL version am I using ?
To verify what GET.DLL version is loaded,
you can launch the 'get.about' UDP that will give you
version information, last date of modification, and
complete path to the DLL.
Does this Magic DLLs run on NT ?
GET.DLL and NETGET.DLL are Win32 DLLs, they should work
under Windows 95 (all versions), Windows 98, Windows ME,
Windows NT 4, Windows 2000, and upper versions if Microsoft
keeps them backward compatible. Actually, some functions
test the Windows version to ensure that it works on all
current systems (for instance, the beep function).
NTGET.DLL works only on Windows NT/2000, and MFGET.DLL
only on Citrix Windows systems.
What is the difference between UDF and UDP
Magic distinguish between the procedures (that return nothing,
and where each parameter can be modified), and the functions
(that return a value, but whose parameters are not modified).
To call the former, you use the CALL UDP operation (UDP is
an option of the CALL operation, like Task, Prog and Exp).
The latter ones are used with the UDF() function, in the
Why do you distribute LCC-Win32 and Borland C/C++ compiled versions ?
So you have the choice ! I use LCC-Win32, and only compiled
with Borland C/C++ in case I'll need C++.
It doesn't work on this other PC.
A few functions need recent system DLLs (such as
comctl32.dll) to fully work. Try to install IE3 (at least).
Make sure you have the good version on this PC (try
'get.about', this procedure shows an about box that shows
I have an "Failed to load driver" message
Magic did not find the DLL. The best place to put
Magic DLLs is in your Magic folder (the same place
as you mmgenw.exe or mgrntw.exe). If the problem persists, it may
be a dependent DLL that is not present (look at
to determine if all dependencies are OK).
For NETGET.DLL, you need Internet Explorer ;
NTGET.DLL will only run on Windows NT only and MFGET.DLL
use Citrix Winframe extensions.
How can I use my national characters ?
If you use a 8 bits character set, then you can. Magic
internally use the ASCII character set (like DOS), but
Windows use ANSI. So you need to convert between the 2
characters set. You can use the get.ansi_to_oem and
get.load_convert functions, initialize their behavior
by the get.load_convert function, that lets you use Magic
translation files or Windows internal functions.
Magic 9 eDeveloper use ANSI character set.
I don't understand your documentation !
I'm not a native English speaker, so what you read
may have no sense. Look at the demo application, it
aims to help you.
Can I have the source code ?
No, you can't. It's a freeware but it's not open-source.
This DLLs are written in C, using LCC-Win32 or
Borland C++ as the compiler. I may sell it however.
Can I use GET.DLL from other development Tools ?
Functions are exported, so you should be able to use them. However
some functions supports only Magic (I'm testing window
classes for instance). For Magic specific DLLs that
do not export functions, you can use
that reproduces GetProcAddress behavior for Magic DLLs.
Types used in Magic DLL are : A (string, char *), L (pointer to long,
long *) and D (pointer to double, double *).
Can I print Magic Cross References ?
Why don't you support gif animation ?
There are some
and anyway I don't know how to support them.
However, I support .ani and .avi animations, so
you can convert your gif animations to .avi :
they take less CPU usually as they are designed for speed, not
for saving bandwidth.
What are the memory requirements ?
shows that memory requirements are about 450KB.
The file size is under 300KB.
Hi ! I have a suggestion.
Numerous functions and enhancements are users suggestions :
I mark them by this bitmap : .
Hi ! I have a contribution.
I you want to share with other Magicians a piece of code, some
tools or other magicwares, I have a place for you.
I have a question.
You can Contact me, Dominique Stéphan.
How can I make a Magic DLL ?
I'm still waiting for your answer !
You first have to do a Windows DLL, it's mean you need
either a C compiler, a C/C++ compiler or Delphi (you can't
do real DLLs from Visual Basic).
You'll also need to know the language,
and to know how to develop for Windows using this language.
A Magic DLL has some specificities : look at the samples
in the Magic userproc subfolder ; you can also look
this small sample using LCC-Win32,
as well as this technotes
that explains how to compile for LCC-Win32
and Visual C++ 5.
Hotfudge has a Delphi sample,
with the adapted Magic header.
Since Magic 8.20, you can also call standard Windows DLLs
with the new call udp operation behavior.
Please recontact me,
I may have lost or forgotten your mail.
Package Name : GET.DLL
The official name is GET.DLL. GET because the
first functions I wrote always began by get, and that
I like short names ; and DLL because it's a Windows Library.
The package has grown up, and now there are several Magic
DLLs : GET.DLL, NETGET.DLL (network), MFGET.DLL (metaframe),
NTGET.DLL (Windows NT/2000), MAILGET.DLL (Mapi and Mailto), PHONEGET.DLL (to
phone using sound card).
What does kenavo mean ?
But what does au revoir mean ???