# Introduction

ARWEN is a fast, compact GUI library for Windows-based applications. The control set is a modest size but the functionality is sound and ARWEN has special features not easily accessible elsewhere.

> PL: Arwen was originally written by Mike aka Spock and released into the Public Domain. This is a lightly re-organised but otherwise straightforward copy of a rather dated text, for instance there is no mention (yet) of either ListViews or TreeViews anywhere.
> I should also mention win32lib: while that is a very rich, stable and useful library, I do not generally recommend it be used. The reason is simple: should you hit a limitation or bug, it will severely hamper your progress. Sure, you are more likely to find that something is missing in arwen, but equally you are far more likely to be able to do something about it, assuming that by the time that happens you have reached a certain level of proficiency.

#### Disclaimer

The software and documentation are provided "as is", without any express or implied warranty for any use whatsoever. No warranty is provided that any part of the software and/or documentation is error free. The Author will not in any event be liable for any direct, indirect, special, incidental, consequential or other imaginable damages related to any use, reproduction, modification, or distribution of the software and/or documentation. Use at own risk.

#### Installation

A copy of ARWEN is installed with Phix, by default in C:\Program Files[ (x86)]\Phix\demo\arwen, and with Edita, by default in C:\Program Files[ (x86)]\Edita\arwen. You may wish to add one of those directores to your PATH (but not both). Alternatively you can use a "stub" file, see include.

#### Credits

The following people have contributed ideas/code either directly or indirectly (aka plagiarised) for this Library :
Rob Craig - Euphoria language
Derek Parnell - Win32 advice + encouragement
Andrea Cini - EuWinGui comparison
David Cuny - Win32lib comparison + code
Al Getz - Scrollbar code + WinClass comparison
Jordah Ferguson - Menu ideas + other code
Bernie Ryan - Win32 comparison
Judith Evans - Text in top-level menu
Wolfgang Fritz - Text in top-level menu
Evan Marshall - Exposing Edit box anomaly in Combo controls
Elliott Sales de Andrade - Trackbar code
Euman - TrackMouseEvent code
Juergen Luethje - Original code for HyperText control, ProgressBar and many other ideas
Pete Lomax - Many bug fixes, enhancements & code examples
Kenny Hoff - Fast Bresenham line drawing routines

#### Conventions

All numbering is one-based, just like Phix, with the exception of image coordinates and memory accesses. Where possible a failed function returns 0. Many routine names in ARWEN are similar to those in Win32lib because they are logical and similar to their native Win32 counterparts. This should make ARWEN easier to use if you are familiar with either the former or the latter. Windows, Controls, Menus and Menu elements are referenced using their ID (which is the library's internal representation for the item) and images (bitmaps, icons & cursors) are currently referenced using the Windows handle (hWnd) for the image, however, DIB sections have an ID which is similar in principle to control IDs in ARWEN. Please see the DIB section documentation for more details. I have tried to prevent ARWEN from getting in the way of potential flexibility and the user will therefore be required to pass certain Win32 constants as parameters in some functions. It may be advisable for a user to obtain the Win32 documentation that is referenced on the Euphoria website and keep it handy during a programming session. In the event that your program crashes because of some internal library problem then please send me the ex.err file plus any other details necessary to explain the error and I'll try to deduce what went wrong.