WinDom: Window Library

- Main Page
- Modules
- Data Structures
- Files
- Related Pages

# Window Library
[Reference documentation]

Manipulate AES Windows in WinDom. More...

## Data Structures
struct | W_GRAFPORT
| This structure groups informations related to graphic window VDI workstation. More...
struct | W_MENU
| This structure groups variables related to handle a menu into a window. More...
struct | W_FORM
| This structure groups variables related to handle a formular into a window. More...
struct | W_ICON
| Structure grouping information related to iconified window. More...
struct | _window
| Window descriptor structure. More...
struct | WINvar
| window global variable More...
struct | W_GRAFPORT
| This structure groups informations related to graphic window VDI workstation. More...
struct | W_MENU
| This structure groups variables related to handle a menu into a window. More...
struct | W_FORM
| This structure groups variables related to handle a formular into a window. More...
struct | W_ICON
| Structure grouping information related to iconified window. More...
struct | _window
| Window descriptor structure. More...
struct | WINDOW
| WINDOW is an alias of struct _window. More...
struct | WINvar
| window global variable More...
## Defines
#define | mt_WindGetGrect(app, win, mode, grect) mt_WindGet( app, win, mode, &((grect)->g_x), &((grect)->g_y), &((grect)->g_w), &((grect)->g_h) )
#define | mt_WindXGetGrect(app, win, mode, clip, grect) mt_WindXGet( app, win, mode, clip, &((grect)->g_x), &((grect)->g_y), &((grect)->g_w), &((grect)->g_h) )
#define | mt_WindSetGrect(app, win, mode, grect) mt_WindSet( app, win, mode, (grect)->g_x, (grect)->g_y, (grect)->g_w, (grect)->g_h )
#define | mt_WindCalcGrect(app, mode, win, inrect, outrect)
#define | WindSetGrect(win, mode, grect) WindSet( win, mode, (grect)->g_x, (grect)->g_y, (grect)->g_w, (grect)->g_h )
#define | WindGetGrect(win, mode, grect) WindGet( win, mode, &((grect)->g_x), &((grect)->g_y), &((grect)->g_w), &((grect)->g_h) )
#define | WindXGetGrect(app, win, mode, clip, grect) WindXGet( win, mode, clip, &((grect)->g_x), &((grect)->g_y), &((grect)->g_w), &((grect)->g_h) )
#define | WindCalcGrect(mode, win, inrect, outrect)
## Typedefs
typedef _window | WINDOW
## Functions
WINDOW * | mt_WindCreate (APPvar *app, int GemAttrib, int x, int y, int w, int h)
| Create a window.
int | mt_WindOpen (APPvar *app, WINDOW *win, int x, int y, int w, int h)
| Open a window at screen.
int | mt_WindClose (APPvar *app, WINDOW *win)
| Close a window opened by mt_WindOpen().
int | mt_WindDelete (APPvar *app, WINDOW *win)
| Delete a window descriptor created by mt_WindCreate().
WINDOW * | mt_WindHandle (APPvar *app, int handle)
| Find a window descriptor by its AES handle.
int | mt_WindGet (APPvar *app, WINDOW *win, int mode, INT16 *par1, INT16 *par2, INT16 *par3, INT16 *par4)
| Get window attributes.
int | mt_WindXGet (APPvar *app, WINDOW *win, int mode, GRECT *clip, INT16 *par1, INT16 *par2, INT16 *par3, INT16 *par4)
| Get window attributes.
void * | mt_WindGetPtr (APPvar *app, WINDOW *win, int mode)
| Get window pointer attribute.
int | mt_WindSet (APPvar *app, WINDOW *win, int mode, int par1, int par2, int par3, int par4)
| set/change window attributes.
int | mt_WindSetStr (APPvar *app, WINDOW *win, int mode, char *str)
| set/change window string attributes
int | mt_WindSetPtr (APPvar *app, WINDOW *win, int mode, void *par1, void *par2)
| set/change window pointer attributes
int | mt_WindCalc (APPvar *app, int type, WINDOW *wind, int xin, int yin, int win, int hin, INT16 *xout, INT16 *yout, INT16 *wout, INT16 *hout)
| convert window workarea in real area and inversly
void | mt_WindSlider (APPvar *app, WINDOW *win, int mode)
| Adjust window sliders according to the internal WinDom slider system.
WINDOW * | mt_WindAttach (APPvar *app, int handle)
| insert an alien window in the WinDom list of windows.
WINDOW * | mt_WindFind (APPvar *app, int mode,...)
| Find a window.
void | mt_WindTop (APPvar *app, WINDOW *win)
| Put a window in foreground.
void | mt_WindNew (APPvar *app)
| replacement of wind_new() for all AESes
void | mt_WindClear (APPvar *app, WINDOW *win)
| clear a window workarea.
void __CDECL | mt_stdWindClear (WINDOW *win, short buff[8], APPvar *app)
| callback function to clear the window content
void __CDECL | stdWindClear (WINDOW *win, short buff[8])
| See mt_stdWindClear().
WINDOW * | WindFind (int mode,...)
| see mt_WindFind()

## Detailed Description

Manipulate AES Windows in WinDom.

## Define Documentation

#define mt_WindCalcGrect | ( | app,
|  | mode,
|  | win,
|  | inrect,
|  | outrect |  | ) |

| Value:
    mt_WindCalc( app, mode, win, \
                                           (inrect)->g_x, (inrect)->g_y, (inrect)->g_w, (inrect)->g_h, \
                                           &(outrect)->g_x, &(outrect)->g_y, &(outrect)->g_w, &(outrect)->g_h )

#define mt_WindGetGrect | ( | app,
|  | win,
|  | mode,
|  | grect |  | ) | mt_WindGet( app, win, mode, &((grect)->g_x), &((grect)->g_y), &((grect)->g_w), &((grect)->g_h) )

#define mt_WindSetGrect | ( | app,
|  | win,
|  | mode,
|  | grect |  | ) | mt_WindSet( app, win, mode, (grect)->g_x, (grect)->g_y, (grect)->g_w, (grect)->g_h )

#define mt_WindXGetGrect | ( | app,
|  | win,
|  | mode,
|  | clip,
|  | grect |  | ) | mt_WindXGet( app, win, mode, clip, &((grect)->g_x), &((grect)->g_y), &((grect)->g_w), &((grect)->g_h) )

#define WindCalcGrect | ( | mode,
|  | win,
|  | inrect,
|  | outrect |  | ) |

| Value:
    WindCalc( mode, win, \
                                           (inrect)->g_x, (inrect)->g_y, (inrect)->g_w, (inrect)->g_h, \
                                           &(outrect)->g_x, &(outrect)->g_y, &(outrect)->g_w, &(outrect)->g_h )

#define WindGetGrect | ( | win,
|  | mode,
|  | grect |  | ) | WindGet( win, mode, &((grect)->g_x), &((grect)->g_y), &((grect)->g_w), &((grect)->g_h) )

#define WindSetGrect | ( | win,
|  | mode,
|  | grect |  | ) | WindSet( win, mode, (grect)->g_x, (grect)->g_y, (grect)->g_w, (grect)->g_h )

#define WindXGetGrect | ( | app,
|  | win,
|  | mode,
|  | clip,
|  | grect |  | ) | WindXGet( win, mode, clip, &((grect)->g_x), &((grect)->g_y), &((grect)->g_w), &((grect)->g_h) )

## Typedef Documentation

typedef struct _window WINDOW

## Function Documentation

void __CDECL mt_stdWindClear | ( | WINDOW * | win,
|  | short | buff[8],
|  | APPvar * | app
| ) |

  | callback function to clear the window content Parameters:
  | win | window descriptor
  | buff | content of the AES message received
  | app | application descriptor
This callback function invoke mt_WindClear() By default, mt_WindCreate() binds mt_stdWindClear() to WM_REDRAW event.

WINDOW* mt_WindAttach | ( | APPvar * | app,
|  | int | handle
| ) |

  | insert an alien window in the WinDom list of windows. Parameters:
  | app | application descriptor,
  | handle | handle of the window to insert,
Returns: the window descriptor associated to this window. mt_WindAttach() allows you to integrate alien windows in the WinDom environnement. The alien window should be created and opened before call of WindAttach(). This function is mainly used to insert window created by an another application inside your application. For example, FselInput() uses it to integrate the MagiC file selector as a window in the application. The window descriptor returned by mt_WindAttach() set the bit WS_FOREIGN to 1 in win->status field. To remove this window from WinDom environmment, mt_WindClose() then mt_WindDelete() should be called. Todo: bind the standard std_cls() and std_dst() events to FOREIGN windows

int mt_WindCalc | ( | APPvar * | app,
|  | int | type,
|  | WINDOW * | wind,
|  | int | xin,
|  | int | yin,
|  | int | win,
|  | int | hin,
|  | INT16 * | xout,
|  | INT16 * | yout,
|  | INT16 * | wout,
|  | INT16 * | hout
| ) |

  | convert window workarea in real area and inversly Parameters:
  | app | application descriptor,
  | type | currently, two values are possible : WC_BORDER : convert work area coodinate in window real coordinates, WC_WORK : inverse operation of WC_BORDER.
  | wind | window descriptor,
  | xin,yin,win,hin | coordinates to convert,
  | xout,yout,wout,hout | converted coordinates,
Returns: a null value if error. mt_WindCalc() take into account optional window menu and toolbar. If you want compute the real AES workarea of a window, use mt_wind_calc(). See also: mt_wind_calc()

void mt_WindClear | ( | APPvar * | app,
|  | WINDOW * | win
| ) |

  | clear a window workarea. Parameters:
  | app | application descriptor,
  | win | window descriptor,
This function draws the window background i.e. a bar (typically with a white color) in the workarea of a window. Color, pattern and style can be parametrised via internal WinDom configuration (see mt_AppSet()). This is the function invoked by the callback function mt_stdWindClear().

int mt_WindClose | ( | APPvar * | app,
|  | WINDOW * | win
| ) |

  | Close a window opened by mt_WindOpen(). Parameters:
  | app | application descriptor,
  | win | window descriptor,
Returns: 0 or a negative code error. mt_WindClose() closes a window on the screen and replaces the AES wind_close function. As mt_WindOpen() a graphic effect is used if the window status (parameter win->status) WS_GROW bit is set to 1. For similar raisons explained in the mt_WindOpen() manual, the wind_close() should never be used except in some special case. It is important to remove the window from the internal WinDom opened windows list with the remove_windowlist() function. See also: mt_WindOpen().

WINDOW* mt_WindCreate | ( | APPvar * | app,
|  | int | GemAttrib,
|  | int | x,
|  | int | y,
|  | int | w,
|  | int | h
| ) |

  | Create a window. Parameters:
  | app | application descriptor,
  | GemAttrib | GEM widget of the window. It is a bitfield of the following values : CLOSER : button to close the window, MOVER : bar to move the window, NAME : the window title (on the mover bar), INFO : the window informative bar (under the mover bar), SIZER : button to resize the window, VSLIDE : vertical slider, UPARROW : up arrow in vertical slider, DNARROW : down arrow in vertical slider, HSLIDE : horizontal slider, RTARROW : right arrow in horizontal slider, LFARROW : left arrow in horizontal slider, FULLER : button to resize in fullscreen the window, SMALLER : button to iconify the window. Available with AES 4.0 or newer. If AES does not support iconification, WinDom emulates it : if user clicks on the CLOSER widget when the shift key is depressed, a WM_ICONIFY event is sent, MENUBAR (xaAES only) : As WinDom can handle its own menubar, this widget could be safely ignored. However, WinDom can leave to system to handle menu. WAT_ALL (WinDom constant) : all widgets (except MENUBAR), WAT_NOINFO (WinDom constant) : all widgets (except MENUBAR and INFO), WAT_FORM (WinDom constant) : widget for a formular (no SIZER and sliders), WAT_MFORM (WinDom constant) : widget for a modal formular (as WAT_FORM without CLOSER).
  | x,y,w,h | maximal size of the window.
Returns: a pointer to a window descriptor or NULL if an error occurs. In WinDom, you have to create a window with mt_WindCreate() and not mt_wind_create() (unless you know what you do ...). mt_WindCreate() does not display window at screen. For that, use mt_WindOpen(). mt_WindCreate() performs the following actions : a WINDOW structure is created and inserted in the internal WinDom list (see mt_AddWindows()), the GEM window is created, standard callback functions are bound to the window (using mt_EvntAttach()). This last point is very important: when a window is created by mt_WindCreate(), this window is ready to live in the WinDom environnement because standard functions handle most of GEM events. Of course, these standard functions are very common and basic and the developper should need to change or remove some of them (for that purpose, see the Event Library). A useless window should be deleted by calling mt_WindDelete(). However, you probably never use directly this function because standard event function make for you this work. Event mesages handled by default WM_REDRAW (window area should be refreshed) : handled by WindClear(), WM_CLOSED (window should be closed) : handled by std_cls(), WM_DESTROY (window and data related should be released) : handled by std_dstry(), WM_TOPPED (window should be put in foreground) : handled by std_tpd(), WM_BOTTOMED (window should be put in background) : handled by std_btm(), WM_MOVED (window has moved) : handled by std_mvd(), WM_SIZED (window has been resized) : handled by std_szd(), WM_REPOSED (window has been moved and resized) : handled by std_szd(), WM_FULLED (window resized in fullscreen) : handled by std_fld(), WM_ICONIFY (window should be iconified ) : handled by std_icn(), WM_UNICONIFY (iconified window should be restored) : handled by std_unicn(), WM_ALLICONIFY (all opened windows should be iconified) : std_allicn(), WM_HSLID (horizontal slider has be moved) : handled by std_hsld(), WM_VSLID (vertical slider has be moved) : handled by std_vsld(), WM_ARROWED (slider arrows has be selected) : handled by std_arw(), WA_DNPAGE (one page down) : handled by std_dnpgd(), WA_UPPAGE (one page up) : handled by std_uppgd(), WA_LFPAGE (one page left) : handled by std_lfpgd(), WA_RTPAGE (one page down) : handled by std_rtpgd(), WA_DNLINE (one line down) : handled by std_dnlnd(), WA_UPLINE (one line up) : handled by std_uplnd(), WA_LFLINE (one line left) : handled by std_lflnd(), WA_RTLINE (one line down) : handled by std_rtlnd(), The WM_BOTTOMED is supported by WinDom for any TOS version. With TOS unsorpting this feature, a window can be 'bottomed', i.e. send to the background, by shift-clicking the mover widget. See also: mt_WindOpen(), mt_WindClose(), mt_WindDelete() Todo: The window chained list could be used instead of WINDOWLIST.

int mt_WindDelete | ( | APPvar * | app,
|  | WINDOW * | win
| ) |

  | Delete a window descriptor created by mt_WindCreate(). Parameters:
  | app | application descriptor,
  | win | window descriptor,
Returns: 0 or a negative code error. mt_WindDelete() replaces mt_wind_delete(). The window descriptor is removed from the list of windows then deleted. See also: mt_WindCreate().

WINDOW* mt_WindFind | ( | APPvar * | app,
|  | int | mode,
|  |  | ...
| ) |

  | Find a window. Parameters:
  | app | application descriptor,
  | mode | indicates how find the window. Possible values are : WDF_NAME : find a window by name, a string parameter is attented, WDF_INFO: find a window by info string, a string parameter is attented, WDF_ID: find a window by GEM handle, an integer value is attented, WDF_MENU: find a window by its OBJECT menu tree, a pointer is attented, WDF_TOOL: find a window by its OBJECT toolbar tree, a pointer is attented, WDF_DATA: find a window by data (using mt_DataSearch()), a pointer is attented,
  | ... | parameter type depend on previous values of mode
Returns: window descriptor found or NULL otherwise.

int mt_WindGet | ( | APPvar * | app,
|  | WINDOW * | win,
|  | int | mode,
|  | INT16 * | x,
|  | INT16 * | y,
|  | INT16 * | w,
|  | INT16 * | h
| ) |

  | Get window attributes. Parameters:
  | app | application descriptor,
  | win | target window (or NULL in some case),
  | mode | attribute to read,
  | x,y,w,h | meanning depend on value of mode. For detail, read manual of mt_WindSet(). WF_FTOOLBAR : unless we use AES4 toolbar, this message is useless with WinDom toolbar system (see mt_WindSet(WF_TOOLBAR)). WinDom redraw itsel the toolbar area. However, for AES4 comptability, mt_WindGet() returns correct values for this mode, WF_NTOOLBAR : same remark than for F_FTOOLBAR.
Returns: 0 or a negative code error. Use this function instead of mt_wind_get(). See also: mt_WindSet()

void* mt_WindGetPtr | ( | APPvar * | app,
|  | WINDOW * | win,
|  | int | mode
| ) |

  | Get window pointer attribute. Parameters:
  | app | application descriptor,
  | win | target window (or NULL in some case),
  | mode | attribute to read,
Returns: mode dependent pointer value (can be NULL).

WINDOW* mt_WindHandle | ( | APPvar * | app,
|  | int | handle
| ) |

  | Find a window descriptor by its AES handle. Parameters:
  | app | application descriptor,
  | handle | AES window handle,
Returns: pointer to the matching WINDOW descriptor or NULL if descriptor not found. This function converts a GEM window handle in a WinDom window descriptor. If the window is not found, mt_WindHandle() returns a NULL value (the window does not exist or belongs to an another application). This function is often used to analyse a GEM message or with the AES mt_wind_find() function. See also: mt_wind_find(), mt_WindFind()

void mt_WindNew | ( | APPvar * | app | ) |

  | replacement of wind_new() for all AESes Parameters:
  | app | application descriptor,
This function was never really tested and used.

int mt_WindOpen | ( | APPvar * | app,
|  | WINDOW * | win,
|  | int | x,
|  | int | y,
|  | int | w,
|  | int | h
| ) |

  | Open a window at screen. Parameters:
  | app | Application descriptor,
  | win | window to open,
  | x,y,w,h | position and size of the window on screen. If x=-1, the window will be horizontally centered using GrectCenter(). If x=-1, the window will be vertically centered using GrectCenter().
Returns: 0 or a negative code error. mt_WindOpen() opens a window at screen previously created by mt_WindCreate(). In WinDom environnement, the open_wind() should never be used (except some very special case). An opened window has the WS_OPEN(!b) bit set to 1 in win->status. If the status WS_GROW(!b) bit is set to 1, a graphic effect should be used (via graf_growbox() function). A window can have minimum and maximal size : just sets the following variables : win->min_w, win->min_h, win->max_w, win->max_h(!i). Deprecated: If a window has to be opened with open_wind() (for a special raison), the window should be registered in the internal WinDow list of opened windows with the add_windowlist() function. It is important for WinDom to have a correct list because the WM_BOTTOMED message is simuled with old TOS version. See also: GrectCenter()

int mt_WindSet | ( | APPvar * | app,
|  | WINDOW * | win,
|  | int | mode,
|  | int | par1,
|  | int | par2,
|  | int | par3,
|  | int | par4
| ) |

  | set/change window attributes. Parameters:
  | app | application descriptor,
  | win | window descriptor (or NULL in some case),
  | mode | attribute to change,
  | par1 |
  | par2 |
  | par3 |
  | par4 | meanning of these 4 parameters depend on mode value as explained below. For each mode value listed, we describe meanning of these parameters : WF_NAME, WF_INFO, WF_ICONTITLE : see mt_WindSetStr() function, WF_TOOLBAR, WF_MENU, WF_HILIGHT, WF_COMPONENT : see mt_WindSetPtr() function. WF_WORKXYWH : set the window workspace. Additionnal toolbar and menu are taken into account, WF_TOP : Put the window win in foreground (par1, ..., par4 are not used). Internal WinDom list is updated (for WM_BOTTOM emulation), WF_BOTTOM : Put the window win in background (par1, ..., par4 are not used). This mode is supported by all TOS. WF_BEVENT : Set the window event behaviour. Parameter par1 is a bitfield with the following signification : BEVENT_WORK : a mouse button event on a window workspace creates a MU_BUTTON event instead of a WF_TOP event. BEVENT_MODAL : a window modal is the only window active. Mouse button addressed to other application windows are redirected to the modal window. This mode is a specific WinDom feature. WF_ICONIFY : Iconify window win at position specified by par1, par2, par3, par4. Position is provided by the WM_ICONIFY event. This mode is supported by all TOS. WF_UNICONIFY : Uniconify window win at position specified by par1, par2, par3, par4. Position is provided by the WM_UNICONIFY event. This mode is supported by all TOS. WF_UNICONIFXYWH : Specify a position (par1, par2, par3, par4) for the next window that will be iconified. This mode is supported by all TOS. WF_HSLIDE, WF_VSLIDE, WF_HSLSIZE, WF_VSLSIZE : these mode are deprecated in WinDom. mt_WindSlider() should be used instead of mt_WindSet(). WF_VWORK : open (or close) a virtual VDI workstation for this window. par1 = 1 is used to open a virtual workstation (if a virtual workstation was not already opened for this window), and par1 = 0 is used to close the virtual workstation. Other parameters and values are reserved. other values of mode make direct use of mt_wind_set() and have not specific signification in WinDom.
Returns: O or a negative error code. This function is to be always used instead of mt_wind_set() as it is a way WinDom tracks window settings. Some mode needs non integer parameters (e.g. WF_NAME, WF_MENU, ...). In this case, you can use mt_WindSetStr() or mt_WindSetPtr() as specified in the previous list. Many modes don't need to be set in a WinDom program because standard callback functions do it for you. See also: mt_WindSetStr(), mt_WindSetPtr(), mt_WindGet(), mt_WindSlider().

int mt_WindSetPtr | ( | APPvar * | app,
|  | WINDOW * | win,
|  | int | mode,
|  | void * | par1,
|  | void * | par2
| ) |

  | set/change window pointer attributes Parameters:
  | app | application descriptor,
  | win | window descriptor,
  | mode | attribute to change,
  - | par1,par2 | meanning depend on mode value as described below : WF_TOOLBAR, add a toolbar in a window. This mode is supported by all TOS. Toolbar will be displayed horizontally if its width is longer than its height and vertically otherwise. par1 design the pointer to the toolbar object tree and par2 design the callback function handling user selection in toolbar (can be NULL). WF_MENU, add a menu in a window. This mode is supported by all TOS. par1 designs the pointer to the menu object tree and par2 designs the callback function handling user selection in menu (can be NULL). WF_HILIGHT, if the window (or the application desktop if parameter win is NULL), a callback function can be defined and call when a menu item is hilighted or unhilighted. par1 designs the callback function address. menu items. An hilight callback function have the following prototype :
        void (*hilight)( APPvar *app, WINDOW *win, int title, int item);
        // title is the menu title object index visited
        // item is the menu item object index visited.
  WF_COMPONENT, attach a COMPONENT to a work area of the window. par1 pointer to the COMPONENT instance and par2 reserved (must be NULL).
Returns: O or a negative error code. This function is used when window attributes are pointers. See also: mt_WindSet()

int mt_WindSetStr | ( | APPvar * | app,
|  | WINDOW * | win,
|  | int | mode,
|  | char * | str
| ) |

  | set/change window string attributes Parameters:
  | app | application descriptor,
  | win | window descriptor,
  | mode | attribute to change,
  | str | a pointer to a permanent string. Meanning of this parameter depend on mode value as explained below : WF_NAME, set the window title. WF_INFO, set the window informative string. WF_ICONTITLE, set the iconfiued window title. other mode : see mt_WindSet()
Returns: O or a negative error code. This function is used when window attribute is a string. See also: mt_WindSet()

void mt_WindSlider | ( | APPvar * | app,
|  | WINDOW * | win,
|  | int | mode
| ) |

  | Adjust window sliders according to the internal WinDom slider system. Parameters:
  | app | Application descriptor,
  | win | window descriptor,
  | mode | slider to update : HSLIDER : update horizontal slider, VSLIDER : update vertical slider,
WindSlider() updates the size and position of horizontal and vertical sliders according on value of the following variables : win->xpos, win->ypos, win->xpos_max, win->ypos_max, win->h_u, win->w_u . We recall signification of these variables : win->xpos : horizontal relative position of data in the window workaera, win->ypos : vertical relative position of data in the window workaera, win->xpos_max : maximal possible value for win->xpos (0 <= xpos < xpos_max) win->ypos_max : maximal possible value for win->ypos (0 <= ypos < ypos_max) win->w_u : horizontal scrolling unit (in pixel) when a horizontal line scroll occurs, win->h_u : vertical scrolling unit (in pixel) when a vertical line scroll occurs, Unlike WinDom, AES slider positions are between 0 and 1000. With WinDom, values are between 0 and `sizeof(int)=2^32` with Gcc or 2^16 with Pure C. Example Let's give a typical example. We want display an ASCII text in a window. In this context, the variable win->ypos is exactly the index of the first line displayed in the window and the variable win->xpos is the first column displayed in the window (we suppose we use a non proportional font to display the text). So the variable win->ypos_max represents the number of lines of the text and the variable win->xpos_max should be the size of the largest line or a fixed number like 255, to have it easier. The variable win->h_u represents the height of a character cell and the variable win->w_u is the width of a character cell. When the window is opened, variables win->xpos and win->ypos should be zero. The following figure pictures this situation :
    (0,0)                              xpos_max
         ----------------Text------------------
         |                                    | <- Top of the text.
         |       ======= Window =======       |
         |Hello g|uy. Nice to meet you|<-ypos |
         |       |       _            |       |
         |       |      |c| <- h_u    |       |
         |       |       ^---- w_h    |       |
         |       |                    |       |
         |       ----------------------       |
         | xpos---^                           |
         |                                    |
      .->|                                    | <- Botton of the text
      |  --------------------------------------
     ypos_max
These variables are set then the window created. Then, the function mt_WindSlider() sets the size and position of the sliders according to the variables previously described. Usually, the function mt_WindSlider() is used when you change the value of a slider variable. In other cases, event standard functions update slider position and call mt_WindSlider(). Todo: In order to mask information, one could access internal slider variables via WindSet()/WindGet(). One can use the SLIDER library functions too. Inversly WindSet(WF_(H|V)(SLSIZE|SLIDE)) should act on internal WinDom slider values.

void mt_WindTop | ( | APPvar * | app,
|  | WINDOW * | win
| ) |

  | Put a window in foreground. Parameters:
  | app | application descriptor,
  | win | window descriptor
mt_WindTop() puts in foreground (tops) a window. If needed : an iconified window will be uniconified, a closed window will be opened (with its previous geometry and position).

int mt_WindXGet | ( | APPvar * | app,
|  | WINDOW * | win,
|  | int | mode,
|  | GRECT * | clip,
|  | INT16 * | x,
|  | INT16 * | y,
|  | INT16 * | w,
|  | INT16 * | h
| ) |

  | Get window attributes. Parameters:
  | app | application descriptor,
  | win | target window (or NULL in some case),
  | mode | attribute to read,
  | clip | rectagle to optimize the result,
  | x,y,w,h | meanning depend on value of mode. For detail, read manual of mt_WindSet(). WF_FTOOLBAR : unless we use AES4 toolbar, this message is useless with WinDom toolbar system (see mt_WindSet(WF_TOOLBAR)). WinDom redraw itsel the toolbar area. However, for AES4 comptability, mt_WindGet() returns correct values for this mode, WF_NTOOLBAR : same remark than for F_FTOOLBAR.
Returns: 0 or a negative code error. Use this function instead of mt_wind_get(). See also: mt_WindSet()

void __CDECL stdWindClear | ( | WINDOW * | win,
|  | short | buff[8]
| ) |

| See mt_stdWindClear().

WINDOW* WindFind | ( | int | mode,
|  |  | ...
| ) |

| see mt_WindFind()