home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 18
/
CD_ASCQ_18_111294_W.iso
/
dos
/
prg
/
c
/
x_lib10
/
xw.doc
< prev
next >
Wrap
Text File
|
1994-10-20
|
58KB
|
1,881 lines
════════════════════════════════════════════════════════════════════════════
LE GESTIONNAIRE DE FENETRES
────────────────────────────────────────────────────────────────────────────
présentation
────────────
Le gestionnaire de fenêtres offre un ensemble de services encapsulés
dans la classe XWinMgr et accessibles via son instance globale xw.
La classe XWinMgr n'est constituée que de membres statiques et n'est pas
dérivable.
construction du gestionnaire
────────────────────────────
Le gestionnaire est construit automatiquement avant la fonction main()
grâce à son instance globale xw.
Après sa construction, un appel à init() est nécessaire pour initialiser
le gestionnaire.
Le gestionnaire ne doit être initialisé qu'après ceux de l'écran, du
clavier, de la souris et des événements.
destruction du gestionnaire
───────────────────────────
Le gestionnaire est détruit automatiquement en fin d'exécution.
Avant sa destruction, un appel à init() est nécessaire pour quitter le
gestionnaire.
Le gestionnaire ne ferme et ne supprime aucune fenêtre.
classe de fenêtre XWin
──────────────────────
La classe dérivable XWin encapsule les services de gestion individuelle
des fenêtres.
Le constructeur de la classe XWin attend deux paramètres : la largeur et
la hauteur de la fenêtre.
Une fenêtre a les caractéristiques suivantes :
-- des dimensions fixées lors de sa construction,
-- des attributs d'affichage modifiables par defw(),
-- un type de fonctionnement modifiable par type(),
-- une palette de couleurs modifiable par cpal(),
-- un titre modifiable par head(),
-- une position modifiable par move(),
-- des objets d'interface ajoutés par link().
A sa création, la fenêtre est centrée sur la hauteur et la largeur de
l'écran.
Par défaut, la fenêtre utilise la palette de couleurs xa_dialog mais
peut se voir associer toute autre palette au format suivant :
╒═══════════════════════════════════════════════════════════╕
│ indice utilisation │
├───────────────────────────────────────────────────────────┤
│ 0 attribut du cadre - fenêtre non active │
│ 1 attribut du titre - fenêtre non active │
│ 2 attribut du cadre - fenêtre active │
│ 3 attribut du titre - fenêtre active │
│ 4 attribut de la zone client de la fenêtre │
└───────────────────────────────────────────────────────────┘
Le destructeur de la classe XWin se charge de fermer la fenêtre puis de
libérer la mémoire qu'elle et ses objets occupent.
Pour éviter la fragmentation excessive de la mémoire, il est conseillé
de détruire les fenêtres dans l'ordre inverse de leur construction.
affichage de la fenêtre
───────────────────────
Les modifications des caractéristiques de la fenêtre et de ses objets
n'entraînent pas son réaffichage ; il appartient à l'application d'en
faire la demande.
L'affichage de la fenêtre est réalisé par les fonctions :
-- XWin::topw() pour ouvrir ou réactiver la fenêtre,
-- XWin::draw() pour dessiner la fenêtre,
-- XWin::draw(id1, id2) pour dessiner un groupe d'objets,
-- XWinMgr::sync() pour afficher un groupe de fenêtres.
Les fonctions XWin::curr() et XWin::gray() actualise l'affichage si la
fenêtre concernée est active.
interceptions des événements de fenêtres
────────────────────────────────────────
Chaque fenêtre dispose de fonctions membres protégées et virtuelles lui
permettant d'assurer la gestion des événements qui se produisent durant
l'utilisation de XWinMgr::eval() et XWinMgr::exec().
La fenêtre interceptant les événements suivants est toujours la fenêtre
active.
L'objet obj est toujours l'objet courant de la fenêtre.
void on_call (XObj *obj)
────────────────────────
Le code associé à obj peut être exécuté.
Il s'agit de la réponse à l'événement xe_CALL.
Par défaut, on_call() est sans effet.
void on_char (int key)
──────────────────────
Le caractère key ne correspond ni à un raccourci clavier, ni à une
touche gérée par l'objet courant de la fenêtre ni à une touche de
tabulation.
Il s'agit d'une des réponses possibles à l'événement xe_CHAR.
Par défaut, on_char() est sans effet.
void on_drag (void)
───────────────────
La fenêtre vient d'être déplacée.
Par défaut, on_drag() est sans effet.
void on_exec (void)
───────────────────
La fenêtre vient d'être activée.
Par défaut, on_exec() est sans effet.
void on_goto (XObj *obj)
────────────────────────
obj devient l'objet courant de la fenêtre.
Il s'agit de la réponse à l'événement xe_GOTO.
Par défaut, on_goto() est sans effet.
int on_hide (XWin *win)
────────────────────────
La fenêtre va cesser d'être active au profit de la fenêtre win.
Si on_hide() renvoie une valeur non nulle, la fenêtre active peut
être remplacée par win. Dans le cas contraire, le remplacement est
refusé.
Par défaut, on_hide() renvoie une valeur non nulle.
void on_lmou (int row, int col)
───────────────────────────────
Un clic sur le bouton gauche de la souris a eu lieu sur la ligne row
et la colonne col à l'extérieur de la fenêtre.
Le clic n'a pas permis de sélectionner une autre fenêtre, soit parce
que la fenêtre active est modale, soit parce que aucune fenêtre n'a
été ciblée.
Il s'agit d'une des réponses possibles à l'événement xe_LMOU.
Par défaut, on_lmou() est sans effet.
void on_lwin (int row, int col)
───────────────────────────────
Un clic sur le bouton gauche de la souris a eu lieu à l'intérieur de
la fenêtre mais n'a pas eu pour effet de sélectionner un objet.
Les coordonnées row et col sont absolues.
Il s'agit d'une des réponses possibles à l'événement xe_LMOU.
Par défaut, on_lwin() est sans effet.
int on_quit (XObj *obj)
───────────────────────
obj va cesser d'être l'objet courant de la fenêtre.
Si on_quit() renvoie une valeur non nulle, l'objet courant peut être
remplacé. Dans le cas contraire, le remplacement est refusé.
Il s'agit de la réponse à l'événement xe_QUIT.
Par défaut, on_quit() renvoie une valeur non nulle.
void on_rmou (int row, int col)
───────────────────────────────
Un clic sur le bouton droit de la souris a eu lieu sur la ligne row
et la colonne col à l'extérieur de la fenêtre.
La fonction XWinMgr::find() permet de retrouver la fenêtre ciblée
par les coordonnées absolues row et col.
Il s'agit d'une des réponses possibles à l'événement xe_RMOU.
Par défaut, on_rmou() est sans effet.
void on_rwin (int row, int col)
───────────────────────────────
Un clic sur le bouton droit de la souris a eu lieu sur la ligne row
et la colonne col à l'intérieur de la fenêtre.
La fonction XWin::find() permet de retrouver l'objet ciblé par les
coordonnées absolues row et col dans la fenêtre active.
Il s'agit d'une des réponses possibles à l'événement xe_RMOU.
Par défaut, on_rwin() est sans effet.
void on_user (XObj *obj, int val)
─────────────────────────────────
obj prévient sa fenêtre propriétaire du changement intervenu val.
Par défaut, on_user() est sans effet.
événements non gérés
────────────────────
xe_IDLE et xe_MOVE.
Pour utiliser les fonctions membres spécifiques à chaque classe d'objet,
il faut effectuer un transtypage de l'objet vers le type voulu. La macro
xo() effectuer cette opération.
La macro xo() s'utilise comme suit :
xo(pointeur_générique, type_X) -> pointeur_sur_objet_X
évaluation des événements en provenance du clavier
──────────────────────────────────────────────────
Les événements du clavier sont évalués dans cet ordre :
-- est-ce la touche de déplacement de fenêtre <shift-F1> ?
-- si fenêtre déplaçable : déplacement puis on_drag(),
-- sinon : sans effet.
-- est-ce la touche de sélection de fenêtre <alt-F1> ?
-- sélection d'une autre fenêtre si la fenêtre active est
amodale et si on_hide() renvoie une valeur non nulle,
-- sinon : sans effet.
-- l'objet courant peut-il traiter cette touche ?
-- est-ce une touche utilisée comme raccourci par un objet ?
-- si objet ciblé différent de l'objet courant :
-- si objet courant existe : événement xe_QUIT,
-- événement xe_GOTO.
-- événement xe_CALL.
-- est-ce une touche de tabulation ?
-- si objet ciblé différent de l'objet courant :
-- si objet courant existe : événement xe_QUIT,
-- événement xe_GOTO.
-- sinon : sans effet.
-- sinon envoi de la touche à la fenêtre par on_char().
index des fonctions
───────────────────
╒═══════════════════════════════════════════════════════════════════╕
│ fonction utilisation │
├───────────────────────────────────────────────────────────────────┤
│<<XWinMgr...>> │
│ desk affiche le bureau │
│ desk modifie le motif du bureau │
│ eval évalue un événement │
│ exec exécute une fenêtre en mode modal │
│ find recherche une fenêtre selon des coordonnées │
│ full initialise ou quitte tous les gestionnaires │
│ halt quitte l'application par manque de mémoire │
│ init initialise ou quitte le gestionnaire │
│ root renvoie l'adresse de la première fenêtre ouverte │
│ sync affiche toutes les fenêtres ouvertes │
│ topw renvoie l'adresse de la fenêtre active │
├───────────────────────────────────────────────────────────────────┤
│<<XWinMgr...>> │
│ ok boîte de dialogue Ok │
│ msg boîte de message │
│ pop menu pop-up │
│ yes boîte de dialogue Oui/Non │
├───────────────────────────────────────────────────────────────────┤
│<<XWin...>> │
│ addr recherche un objet selon un identificateur │
│ cell vérifie l'inclusion d'une cellule dans la fenêtre │
│ cpal renvoie l'adresse de la palette de couleurs │
│ cpal remplace la palette de couleurs de la fenêtre │
│ ccur renvoie l'adresse de l'objet courant de la fenêtre │
│ ccur remplace l'objet courant de la fenêtre │
│ defw renvoie la définition de la fenêtre │
│ defw modifie la définition de la fenêtre │
│ drag déplace la fenêtre en mode interactif │
│ draw dessine la fenêtre │
│ draw dessine un groupe d'objets │
│ find recherche un objet selon un raccourci clavier │
│ find recherche un objet selon des coordonnées │
│ gray vérifie la validité d'un objet │
│ gray invalide un groupe d'objets │
│ head renvoie l'adresse du titre de la fenêtre │
│ head remplace le titre de la fenêtre │
│ hide ferme la fenêtre │
│ link ajoute un objet dans la fenêtre │
│ move déplace la fenêtre │
│ next renvoie l'adresse de la fenêtre ouverte suivante │
│ prev renvoie l'adresse de la fenêtre ouverte précédente │
│ rect renvoie les coordonnées et dimensions de la fenêtre │
│ retn renvoie la valeur de retour de la fenêtre │
│ retn remplace la valeur de retour de la fenêtre │
│ stat renvoie l'état courant de la fenêtre │
│ topw ouvre la fenêtre │
│ type renvoie le type de la fenêtre │
│ type modifie le type de la fenêtre │
├───────────────────────────────────────────────────────────────────┤
│ <<XObj...> │
│ cell vérifie l'inclusion d'une cellule dans l'objet │
│ draw dessine l'objet │
│ gray vérifie la validité de l'objet │
│ gray invalide un objet │
│ id renvoie l'identificateur de l'objet │
│ next renvoie le successeur de l'objet │
│ prev renvoie le prédécesseur de l'objet │
│ pwin renvoie l'adresse de la fenêtre propriétaire │
│ rect renvoie les coordonnées et dimensions de l'objet │
│ stat renvoie l'état de la fenêtre propriétaire │
│ topw vérifie l'activité de la fenêtre propriétaire │
│ type renvoie le type de l'objet │
└───────────────────────────────────────────────────────────────────┘
════════════════════════════════════════════════════════════════════════════
XWinMgr::desk public:static
affiche le bureau
────────────────────────────────────────────────────────────────────────────
utilisation
void desk (void)
description
desk() affiche le bureau servant de fond aux fenêtres.
voir aussi
XWinMgr::sync()
════════════════════════════════════════════════════════════════════════════
XWinMgr::desk public:static
modifie le motif du bureau
────────────────────────────────────────────────────────────────────────────
utilisation
void desk (char chr, char att)
paramètres
chr caractère
att attribut
description
desk() modifie le motif du bureau en le remplaçant par le caractère chr
et l'attribut att.
La modification n'est faite que si le paramètre correspondant n'est pas
nul.
Par défaut, le motif de remplissage du bureau est formé par le pavé gris
(176) et un attribut qui est bleu/gris si l'écran supporte la couleur et
noir/gris dans le cas contraire.
desk() ne redessine pas automatiquement le bureau.
voir aussi
XWinMgr::desk()
════════════════════════════════════════════════════════════════════════════
XWinMgr::eval public:static
évalue un événement
────────────────────────────────────────────────────────────────────────────
utilisation
XWin * eval (XEvn& evn)
paramètres
evn référence de XEvn
assertions
evn != 0
description
eval() évalue l'événement evn en fonction des fenêtres ouvertes.
L'état de la fenêtre active passe de xw_TOPW à xw_EXEC.
eval() est sans effet si aucune fenêtre n'est ouverte.
eval() renvoie l'adresse de la fenêtre active après évaluation de evn ou
0 si aucune fenêtre n'est ouverte ; dans ce cas, evn n'est pas évalué.
voir aussi
XWinMgr::topw(), XWin::stat(), XWin::topw()
════════════════════════════════════════════════════════════════════════════
XWinMgr::exec public:static
exécute une fenêtre en mode modal
────────────────────────────────────────────────────────────────────────────
utilisation
int exec (XWin *win)
paramètres
win pointeur sur fenêtre
assertions
win != 0
description
exec() ouvre la fenêtre win et l'exécute en mode modal.
exec() évalue tous les événements à destination de la fenêtre win et
prend fin lorsqu'elle cesse d'être la fenêtre active. exec() renvoie
alors la valeur choisie par la fenêtre en fin d'exécution.
Les fonctions membres permettant de fermer la fenêtre doivent s'assurer
de la validité de la valeur de retour.
voir aussi
XWinMgr::eval(), XWinMgr::topw(), XWin::retn()
════════════════════════════════════════════════════════════════════════════
XWinMgr::find public:static
recherche une fenêtre selon des coordonnées
────────────────────────────────────────────────────────────────────────────
utilisation
XWin * find (int row, int col)
paramètres
row numéro de ligne
col numéro de colonne
description
find() renvoie l'adresse de la fenêtre contenant la cellule située sur
la ligne row et la colonne col.
La recherche débute par la fenêtre active et remonte jusque la première
fenêtre ouverte.
find() renvoie 0 si aucune fenêtre ne contient la cellule.
════════════════════════════════════════════════════════════════════════════
XWinMgr::full public:static
initialise ou quitte tous les gestionnaires
────────────────────────────────────────────────────────────────────────────
utilisation
void full (int cmd)
paramètres
cmd commande d'initialisation
description
full() initialise ou quitte tous les gestionnaires.
Si cmd est non nul, init() initialise les gestionnaires dans cet ordre :
-- gestionnaire d'écran par XScrMgr::init(),
-- gestionnaire de clavier par XKeyMgr::init(),
-- gestionnaire de souris par XMouMgr::init(),
-- gestionnaire d'événements par XEvnMgr::init(),
-- gestionnaire de fenêtres par XWinMgr:init().
Si cmd est nul, init() quitte les gestionnaires dans l'ordre inverse de
leur initialisation.
Le bureau n'est pas automatiquement affiché.
voir aussi
XWinMgr::desk(), XWinMgr::init(), XKeyMgr::init(), XMouMgr::init()
XEvnMgr::init(), XScrMgr::init()
════════════════════════════════════════════════════════════════════════════
XWinMgr::halt public:static
quitte l'application par manque de mémoire
────────────────────────────────────────────────────────────────────────────
utilisation
void halt (void)
description
halt() quitte l'application en cas d'insuffisance de mémoire.
halt() est appelée par la fonction XWin::link() et par les constructeurs
d'objets.
Par défaut, halt() appele la fonction standard abort() mais peut être
redéfinie à condition de mettre fin à l'application.
voir aussi
XWin::link()
════════════════════════════════════════════════════════════════════════════
XWinMgr::init public:static
initialise ou quitte le gestionnaire
────────────────────────────────────────────────────────────────────────────
utilisation
void init (int cmd)
paramètres
cmd commande d'initialisation
description
init() initialise ou quitte le gestionnaire.
Si cmd est non nul, init() initialise le gestionnaire par les étapes :
-- choix du motif et de la couleur du bureau.
Si cmd est nul, init() quitte le gestionnaire sans fermer les fenêtres
encore ouvertes.
Le bureau n'est pas automatiquement affiché.
init() est sans effet si l'état demandé est déjà celui du gestionnaire.
voir aussi
XWinMgr::desk()
════════════════════════════════════════════════════════════════════════════
XWinMgr::ok public:static
boîte de dialogue Ok
────────────────────────────────────────────────────────────────────────────
utilisation
void ok (const char *hdr, const char *msg)
paramètres
hdr pointeur sur titre de la fenêtre
msg pointeur sur message
assertions
msg != 0
description
ok() crée et affiche une boîte de dialogue dotée d'un bouton Ok et d'une
zone de texte contenant le message msg.
La fenêtre créée par ok() est déplaçable et amodale. Elle dispose d'un
titre si hdr est non nul.
ok() détruit automatiquement la fenêtre.
════════════════════════════════════════════════════════════════════════════
XWinMgr::msg public:static
boîte de message
────────────────────────────────────────────────────────────────────────────
utilisation
XWin * msg (const char *hdr, const char *msg)
paramètres
hdr pointeur sur titre de la fenêtre
msg pointeur sur message
assertions
msg != 0
description
msg() crée et affiche une boîte de dialogue dotée d'une zone de texte
contenant le message msg.
La fenêtre créée par msg() est déplaçable et amodale. Elle dispose d'un
titre si hdr est non nul.
msg() renvoie un pointeur sur la fenêtre créée ; le programme appelant a
la charge de sa destruction.
════════════════════════════════════════════════════════════════════════════
XWinMgr::pop public:static
menu pop-up
────────────────────────────────────────────────────────────────────────────
utilisation
int pop (const char *hdr, XOpt *opt, int out)
paramètres
hdr pointeur sur titre de la fenêtre
opt pointeur sur tableau d'options XOpt
out indicateur de menu pseudo-modal
assertions
opt != 0
description
pop() crée et affiche un menu pop-up contenant les options désignées
dans le tableau adressé par opt.
La fenêtre créée par pop() est déplaçable et amodale. Elle dispose d'un
titre si hdr est non nul.
pop() détruit la fenêtre et renvoie l'identificateur de l'option ou 0 en
cas d'abandon (par la touche <escape> ou par un clic de souris hors du
menu si out est non nul).
════════════════════════════════════════════════════════════════════════════
XWinMgr::root public:static
renvoie l'adresse de la première fenêtre ouverte
────────────────────────────────────────────────────────────────────────────
utilisation
XWin * root (void)
description
root() renvoie l'adresse de la première fenêtre ouverte.
root() renvoie 0 si aucune fenêtre n'est ouverte.
voir aussi
XWinMgr::topw()
════════════════════════════════════════════════════════════════════════════
XWinMgr::sync public:static
redessine les fenêtres ouvertes
────────────────────────────────────────────────────────────────────────────
utilisation
void sync (XWin *win)
paramètres
win pointeur sur fenêtre
assertions
win nul ou pointeur sur fenêtre ouverte
description
sync() redessine les fenêtres ouvertes.
Si win est nul, sync() redessine le bureau puis toutes les fenêtres
ouvertes.
Si win est non nul, sync() ne redessine que les fenêtres débutant par
win sans afficher le bureau.
voir aussi
XWinMgr::desk()
════════════════════════════════════════════════════════════════════════════
XWinMgr::topw public:static
renvoie l'adresse de la fenêtre active
────────────────────────────────────────────────────────────────────────────
utilisation
XWin * topw (void)
description
topw() renvoie l'adresse de la fenêtre active.
topw() renvoie 0 si aucune fenêtre n'est ouverte.
voir aussi
XWinMgr::root()
════════════════════════════════════════════════════════════════════════════
XWinMgr::yes public:static
boîte de dialogue Oui/Non
────────────────────────────────────────────────────────────────────────────
utilisation
int yes (const char *hdr, const char *msg)
paramètres
hdr pointeur sur titre de la fenêtre
msg pointeur sur message
assertions
msg != 0
description
yes() crée et affiche une boîte de dialogue dotée des boutons Oui et Non
et d'une zone de texte contenant le message msg.
La fenêtre créée par yes() est déplaçable et amodale. Elle dispose d'un
titre si hdr est non nul.
yes() détruit automatiquement la fenêtre et renvoie une valeur non nulle
si le bouton Oui est utilisé ou 0 s'il s'agit du bouton Non.
════════════════════════════════════════════════════════════════════════════
XWin::addr public
recherche un objet selon son identificateur
────────────────────────────────────────────────────────────────────────────
utilisation
XObj * addr (int id)
paramètres
id identificateur d'objet
description
addr() recherche l'objet de la fenêtre ayant l'identificateur id.
addr() débute la recherche par le premier objet ajouté dans la fenêtre
et termine par le dernier.
addr() renvoie l'adresse de l'objet ou 0 si aucun objet de la fenêtre
n'est concerné.
════════════════════════════════════════════════════════════════════════════
XWin::cell public
vérifie l'inclusion d'une cellule dans la fenêtre
────────────────────────────────────────────────────────────────────────────
utilisation
int cell (int row, int col)
paramètres
row numéro de ligne
col numéro de colonne
description
cell() vérifie l'inclusion de la cellule située sur la ligne row et la
colonne col dans la fenêtre.
cell() renvoie 0 si la cellule n'est pas incluse dans la fenêtre et une
valeur non nulle dans le cas contraire.
════════════════════════════════════════════════════════════════════════════
XWin::cpal public
renvoie l'adresse de la palette de couleurs 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
char * cpal (void)
description
cpal() renvoie l'adresse de la palette de couleurs de la fenêtre.
voir aussi
XWin::cpal()
════════════════════════════════════════════════════════════════════════════
XWin::cpal public
remplace la palette de couleurs de la fenêtre 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
void cpal (char *pal)
paramètres
pal pointeur sur palette de couleurs
assertions
pal != 0
description
cpal() remplace la palette de couleurs de la fenêtre par pal.
cpal() n'actualise pas l'affichage.
voir aussi
XWin::cpal(), XWin::draw(), XWin::topw(), XWinMgr::sync()
════════════════════════════════════════════════════════════════════════════
XWin::ccur public
renvoie l'adresse de l'objet courant de la fenêtre 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
XObj * ccur (void)
description
ccur() renvoie l'adresse de l'objet courant de la fenêtre.
ccur() renvoie l'adresse de l'objet ou 0 si la fenêtre ne possède pas
d'objet courant.
════════════════════════════════════════════════════════════════════════════
XWin::ccur public
remplace l'objet courant de la fenêtre 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
void curr (int id)
paramètres
id identificateur d'objet
description
curr() remplace l'objet courant de la fenêtre par celui qui est associé
à l'identificateur id.
curr() est sans effet si l'objet id n'existe pas dans la fenêtre ou s'il
n'est pas sélectionnable à ce moment.
Si la fenêtre est en cours d'exécution, curr() déclenche l'événement
xe_GOTO sans jamais le précéder de l'événement xe_QUIT.
curr() met à jour l'affichage si la fenêtre est active.
voir aussi
curr()
════════════════════════════════════════════════════════════════════════════
XWin::defw public
renvoie la définition de la fenêtre 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
int defw (void)
description
defw() renvoie la définition de la fenêtre telle qu'elle a été choisie
lors de sa construction ou du dernier appel à defw().
voir aussi
XWin::defw(), XWin::drag()
════════════════════════════════════════════════════════════════════════════
XWin::defw public
modifie la définition de la fenêtre 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
void defw (int def)
paramètres
def définition
assertions
def définition valide
description
defw() remplace la définition de la fenêtre par def.
defw() ne doit être utilisée que lors de la construction de la fenêtre.
def est une combinaison des constantes suivantes :
╒═══════════════════════════════════════════════════════════╕
│ constante utilisation déf │
├───────────────────────────────────────────────────────────┤
│ xw_FRAME fenêtre avec cadre * │
│ xw_HEADER fenêtre avec bandeau de titre * │
│ xw_CLIENT fenêtre avec zone client * │
│ xw_SHADOW fenêtre avec ombre * │
│ xw_MODAL fenêtre modale * │
│ xw_DRAG fenêtre déplaçable * │
│ xw_STDWIN toutes les constantes ci-énoncées * │
└───────────────────────────────────────────────────────────┘
Avec l'attribut xw_FRAME, un cadre est tracé autour de la fenêtre avec
un filet double si la fenêtre est active et simple dans l'autre cas.
Avec l'attribut xw_HEADER, un titre optionnel est affiché au centre du
bord supérieur de la fenêtre. Cet attribut est indépendant de xw_FRAME.
Avec l'attribut xw_CLIENT, l'intérieur de la fenêtre correspondant à sa
zone client est effacé lors de son ouverture.
Avec l'attibut xw_MODAL, la sélection d'une autre fenêtre se fait en
cliquant sur celle-ci ou en utilisant la touche <alt-F1>.
Avec l'attribut xw_DRAG, le déplacement de la fenêtre se fait en :
-- cliquant sur son bord supérieur et en maintenant le bouton
enfoncé pendant le déplacement,
-- utilisant la touche <shift-F1> puis les touches de direction.
defw() n'actualise pas l'affichage.
voir aussi
XWin::defw()
════════════════════════════════════════════════════════════════════════════
XWin::drag public
déplace la fenêtre en mode interactif
────────────────────────────────────────────────────────────────────────────
utilisation
void drag (void)
assertions
this pointeur sur fenêtre active
description
drag() déplace la fenêtre et ses objets avec la souris ou le clavier.
La souris est seule utilisée pour le déplacement de la fenêtre si un de
ses boutons est enfoncé au moment de l'appel à drag(). Le clavier sera
utilisé dans le cas contraire.
drag() reconnaît quatre touches de déplacement et toute autre met fin à
l'opération :
╒═══════════════════════════════════════════════════════════╕
│ touches utilisation │
├───────────────────────────────────────────────────────────┤
│ <up> déplacement d'une ligne vers le haut │
│ <down> déplacement d'une ligne vers le bas │
│ <left> déplacement d'une colonne vers la gauche │
│ <right> déplacement d'une colonne vers la droite │
└───────────────────────────────────────────────────────────┘
drag() peut déplacer une fenêtre n'ayant pas l'attribut xw_DRAG.
voir aussi
XWin::defw(), XWin::move(), XWin::stat()
════════════════════════════════════════════════════════════════════════════
XWin::draw public
dessine la fenêtre 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
void draw (void)
description
draw() dessine la fenêtre et tous les objets qu'elle contient.
draw() dessine les objets dans l'ordre de leur ajout.
draw() doit être utilisé avec précaution car elle ne vérifie pas l'état
de la fenêtre qui peut être fermée ou n'être pas la fenêtre active.
voir aussi
XWin::link(), XWin::topw(), XWinMgr::sync()
════════════════════════════════════════════════════════════════════════════
XWin::draw public
dessine un groupe d'objets 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
void draw (int id1, int id2)
paramètres
id1 identificateur du premier objet
id2 identificateur du dernier objet
description
draw() dessine le groupe d'objets de la fenêtre en débutant id1 et en
terminant par id2.
draw() est sans effet si id1 n'existe pas dans la fenêtre.
draw() termine l'affichage par l'objet id2 ou par le dernier objet de la
fenêtre si id2 n'est pas rencontré.
draw() doit être utilisé avec précaution car elle ne vérifie pas l'état
de la fenêtre qui peut être fermée ou n'être pas la fenêtre active.
voir aussi
XWin::draw(), XWin::topw(), XWinMgr::sync()
════════════════════════════════════════════════════════════════════════════
XWin::find public
recherche un objet selon un raccourci clavier 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
XObj * find (int key)
paramètres
key raccourci clavier
assertions
key != 0
description
find() recherche l'objet de la fenêtre utilisant le raccourci clavier
key et qui est sélectionnable par clavier.
find() débute la recherche par le premier objet ajouté dans la fenêtre
et termine par le dernier.
find() renvoie l'adresse de objet ou 0 si aucun objet n'est concerné.
════════════════════════════════════════════════════════════════════════════
XWin::find public
recherche un objet selon des coordonnées 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
XObj * find (int row, int col)
paramètres
row numéro de ligne
col numéro de colonne
description
find() recherche l'objet de la fenêtre incluant la cellule située sur la
ligne row et la colonne col et qui est sélectionnable par la souris.
find() débute la recherche par le dernier objet ajouté dans la fenêtre
et remonte ainsi jusqu'au premier.
find() renvoie l'adresse de objet ou 0 si aucun objet n'est concerné.
════════════════════════════════════════════════════════════════════════════
XWin::gray public
vérifie la validité d'un objet 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
int gray (int idt)
paramètres
idt identificateur d'objet
assertions
idt identificateur valide
description
gray() vérifie la validité de l'objet idt de la fenêtre.
gray() renvoie 0 si l'objet est accessible et une valeur non nulle dans
le cas contraire.
voir aussi
XWin::gray(), XObj::gray()
════════════════════════════════════════════════════════════════════════════
XWin::gray public
invalide un groupe d'objets 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
void gray (int id1, int id2, int cmd)
paramètres
id1 identificateur du premier objet
id2 identificateur du dernier objet
cmd commande d'invalidation
description
gray() invalide ou autorise l'accès au groupe d'objets de la fenêtre
débutant par id1 et terminant par id2.
Si cmd est non nul, gray() interdit l'accès aux objets du groupe. Dans
le cas contraire, il en autorise l'accès.
gray() est sans effet si id1 n'existe pas dans la fenêtre.
gray() termine l'opération par l'objet id2 ou, à défaut, par le dernier
objet de la fenêtre.
gray() accepte l'invalidation de l'objet courant de la fenêtre ; il faut
donc déplacer la sélection avant l'opération.
gray() met à jour l'affichage si la fenêtre est active.
voir aussi
XWin::draw(), XWin::topw(), XWinMgr::sync(), XObj::gray()
════════════════════════════════════════════════════════════════════════════
XWin::head public
renvoie l'adresse du titre de la fenêtre 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
char * head (void)
description
head() renvoie l'adresse du titre de la fenêtre.
head() renvoie un pointeur sur une chaîne de caractères terminée par un
délimiteur nul sans qu'il puisse servir à modifier directement le titre
de la fenêtre.
voir aussi
XWin::head()
════════════════════════════════════════════════════════════════════════════
XWin::head public
remplace le titre de la fenêtre 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
void head (const char *str)
paramètres
str pointeur sur titre
description
head() remplace le titre de la fenêtre par une copie de la chaîne str ou
l'efface si str est nul ou vide.
La longueur du titre est limitée à la largeur de la fenêtre moins deux
caractères.
La modification du titre est sans effet si la fenêtre ne dispose pas de
l'attribut xw_HEADER.
head() n'actualise pas l'affichage.
voir aussi
XWin::defw(), XWin::draw(), XWin::head(), XWin::topw(), XWinMgr::sync()
════════════════════════════════════════════════════════════════════════════
XWin::hide public
ferme la fenêtre
────────────────────────────────────────────────────────────────────────────
utilisation
void hide (void)
description
hide() ferme la fenêtre et actualise l'affichage des fenêtres ouvertes.
hide() est sans effet si la fenêtre est déjà fermée.
voir aussi
XWin::stat(), XWin::topw(), XWinMgr::sync()
════════════════════════════════════════════════════════════════════════════
XWin::link public
ajoute un objet dans la fenêtre
────────────────────────────────────────────────────────────────────────────
utilisation
XObj * link (XObj *obj)
paramètres
obj pointeur sur objet
description
link() ajoute l'objet générique obj dans la fenêtre.
link() doit être utilisée après la construction d'un objet pour qu'il
s'intégre dans la fenêtre à laquelle il doit appartenir.
Si obj est nul, link() appelle la fonction XWinMgr::halt().
link() rend courant le premier objet ajouté qui est sélectionnable et
accessible par tabulation. Si aucun objet de ce type n'est ajouté, la
fenêtre ne dispose pas d'objet courant.
link() renvoie l'adresse générique de l'objet ajouté.
voir aussi
XWinMgr::halt(), objets...
════════════════════════════════════════════════════════════════════════════
XWin::move public
déplace la fenêtre
────────────────────────────────────────────────────────────────────────────
utilisation
void move (int abs, int row, int col)
paramètres
abs type de déplacement
row numéro de ligne
col numéro de colonne
description
move() déplace la fenêtre et ses objets.
Si abs est non nul, l'angle supérieur gauche de la fenêtre est placé sur
la ligne row et la colonne col. Si une des coordonnées est négative, la
fenêtre est centrée sur la dimension correspondante.
Si abs est nul, move() déplace la fenêtre de row lignes vers le bas si
row est positif et de col colonnes vers la droite ; le déplacement est
inversé en cas de valeur négative.
move() limite le déplacement de la fenêtre aux dimensions de l'écran.
move() n'actualise pas l'affichage.
voir aussi
XWin::drag(), XWin::draw(), XWin::topw(), XWinMgr::sync()
════════════════════════════════════════════════════════════════════════════
XWin::next public
renvoie l'adresse de la fenêtre ouverte suivante
────────────────────────────────────────────────────────────────────────────
utilisation
XWin * next (void)
assertions
this pointeur sur fenêtre ouverte
description
next() renvoie l'adresse de la fenêtre ouverte suivante.
next() renvoie 0 si la fenêtre est la dernière ouverte.
voir aussi
XWin::prev(), XWin::stat()
════════════════════════════════════════════════════════════════════════════
XWin::prev public
renvoie l'adresse de la fenêtre ouverte précédente
────────────────────────────────────────────────────────────────────────────
utilisation
XWin * prev (void)
assertions
this pointeur sur fenêtre ouverte
description
prev() renvoie l'adresse de la fenêtre ouverte précédente.
prev() renvoie 0 si la fenêtre est la première ouverte.
voir aussi
XWin::next(), XWin::stat()
════════════════════════════════════════════════════════════════════════════
XWin::rect public
renvoie les coordonnées et dimensions de la fenêtre
────────────────────────────────────────────────────────────────────────────
utilisation
void rect (int cli, XRec& rec)
paramètres
cli type de résultat
rec référence de XRec
assertions
rec != 0
description
rect() renvoie dans la structure XRec les coordonnées et dimensions de
la fenêtre si cli est nul ou de sa zone client si cli est non nul.
Si cli est non nul, rect() vérifie la présence des attributs xw_FRAME et
xw_HEADER pour déterminer les position et dimensions de la zone client
de la fenêtre.
La structure XRec a le format suivant :
int row ; numéro de ligne supérieure
int col ; numéro de colonne gauche
int wdt ; largeur
int hgh ; hauteur
════════════════════════════════════════════════════════════════════════════
XWin::retn public
renvoie la valeur de retour de la fenêtre 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
int retn (void)
description
retn() renvoie la valeur de retour choisie par retn().
voir aussi
XWin::retn()
════════════════════════════════════════════════════════════════════════════
XWin::retn public
remplace la valeur de retour de la fenêtre 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
void retn (int val)
paramètres
val valeur de retour
description
retn() remplace la valeur de retour de la fenêtre par val.
La valeur de retour est utilisée par exec() pour renvoyer à l'appelant
le résultat de l'exécution d'une fenêtre modale.
voir aussi
XWin::exec()
════════════════════════════════════════════════════════════════════════════
XWin::stat public
renvoie l'état courant de la fenêtre
────────────────────────────────────────────────────────────────────────────
utilisation
int stat (void)
description
stat() renvoie l'état courant de la fenêtre.
Le résultat de stat() est une des constantes ordonnées suivantes :
╒═══════════════════════════════════════════════════════════╕
│ constante utilisation │
├───────────────────────────────────────────────────────────┤
│ xw_HIDE fenêtre fermée │
│ xw_OPEN fenêtre ouverte mais non courante │
│ xw_TOPW fenêtre ouverte et active │
│ xw_EXEC fenêtre ouverte, active et en exécution │
└───────────────────────────────────────────────────────────┘
L'état xw_EXEC indique que la fenêtre est en cours d'utilisation par les
fonctions XWinMgr::eval() et XWinMgr::exec().
voir aussi
XWin::hide(), XWin::topw(), XWinMgr::eval(), XWinMgr::exec()
════════════════════════════════════════════════════════════════════════════
XWin::topw public
ouvre la fenêtre
────────────────────────────────────────────────────────────────────────────
utilisation
void topw (void)
description
topw() ouvre la fenêtre et actualise l'affichage des fenêtres ouvertes.
topw() équivaut à draw() si la fenêtre est déjà active ; dans le cas
contraire, topw() place la fenêtre au premier plan.
voir aussi
XWin::draw(), XWin::hide(), XWin::stat(), XWinMgr::sync()
════════════════════════════════════════════════════════════════════════════
XWin::type public
renvoie le type de la fenêtre 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
int type (void)
description
type() renvoie le type de la fenêtre tel qu'il a été choisi lors de sa
construction ou par type().
voir aussi
XWin::type()
════════════════════════════════════════════════════════════════════════════
XWin::type public
modifie le type de la fenêtre 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
void type (int typ)
paramètres
typ type de la fenêtre
assertions
typ type valide
description
type() remplace le type de la fenêtre par typ.
type() ne doit être utilisée que lors de la construction de la fenêtre.
typ est une des constantes suivantes :
╒═══════════════════════════════════════════════════════════╕
│ constante utilisation déf │
├───────────────────────────────────────────────────────────┤
│ xw_DIALOG boîte de dialogue * │
│ xw_VMENU menu vertical │
└───────────────────────────────────────────────────────────┘
type() modifie également la palette de couleurs associée à la fenêtre
selon les critères suivants :
-- si type xw_DIALOG, utilisation de la palette xa_dialog,
-- si type xw_VMENU, utilisation de la palette xa_vmenu.
type() n'actualise pas l'affichage.
voir aussi
XWin::type()
════════════════════════════════════════════════════════════════════════════
XObj::cell public
vérifie l'inclusion d'une cellule dans l'objet
────────────────────────────────────────────────────────────────────────────
utilisation
int cell (int row, int col)
paramètres
row numéro de ligne
col numéro de colonne
description
cell() vérifie l'inclusion de la cellule située sur la ligne row et la
colonne col dans l'objet.
Les coordonnées row et col sont relatives à l'écran.
cell() renvoie 0 si la cellule n'est pas incluse dans l'objet et une
valeur non nulle dans le cas contraire.
════════════════════════════════════════════════════════════════════════════
XObj::draw public
dessine l'objet
────────────────────────────────────────────────────────────────────────────
utilisation
void draw (void)
description
draw() dessine l'objet.
draw() doit être utilisée avec précaution car elle ne vérifie pas l'état
de la fenêtre à laquelle appartient l'objet.
voir aussi
XObj::pwin(), XWin::topw(), XWinMgr::sync()
════════════════════════════════════════════════════════════════════════════
XObj::gray public
vérifie la validité de l'objet 1/2
────────────────────────────────────────────────────────────────────────────
utilisation
int gray (void)
description
gray() vérifie la validité de l'objet.
gray() renvoie 0 si l'objet est accessible et une valeur non nulle dans
le cas contraire.
voir aussi
XObj::gray()
════════════════════════════════════════════════════════════════════════════
XObj::gray public
invalide l'objet 2/2
────────────────────────────────────────────────────────────────────────────
utilisation
void gray (int imm, int cmd)
paramètres
imm commande d'affichage immédiat
cmd commande d'invalidation
description
gray() invalide ou autorise l'accès à l'objet.
Si cmd est non nul, gray() interdit l'accès à l'objet. Dans le cas
contraire, il en autorise l'accès.
gray() accepte l'invalidation de l'objet courant de la fenêtre ; il faut
donc déplacer la sélection avant l'opération.
gray() met à jour l'affichage si imm est non nul.
════════════════════════════════════════════════════════════════════════════
XObj::id public
renvoie l'identificateur de l'objet
────────────────────────────────────────────────────────────────────────────
utilisation
int id (void)
description
id() renvoie l'identificateur de l'objet.
════════════════════════════════════════════════════════════════════════════
XObj::next public
renvoie l'adresse du successeur de l'objet
────────────────────────────────────────────────────────────────────────────
utilisation
XObj * next (void)
description
next() renvoie l'adresse du successeur de l'objet.
next() renvoie 0 si l'objet est le dernier ajouté dans la fenêtre au
moyen de la fonction XWin::link().
voir aussi
XObj::prev(), XWin::link()
════════════════════════════════════════════════════════════════════════════
XObj::prev public
renvoie l'adresse du prédécesseur de l'objet
────────────────────────────────────────────────────────────────────────────
utilisation
XObj * prev (void)
description
prev() renvoie l'adresse du prédécesseur de l'objet.
prev() renvoie 0 si l'objet est le premier ajouté dans la fenêtre au
moyen de la fonction XWin::link().
voir aussi
XObj::next(), XWin::link()
════════════════════════════════════════════════════════════════════════════
XObj::pwin public
renvoie l'adresse de la fenêtre propriétaire
────────────────────────────────────────────────────────────────────────────
utilisation
XWin * pwin (void)
description
pwin() renvoie l'adresse de la fenêtre à laquelle appartient l'objet.
L'adresse de la fenêtre propriétaire de l'objet est conservé lors de son
ajout au moyen de la fonction XWin::link().
voir aussi
XWin::link()
════════════════════════════════════════════════════════════════════════════
XObj::rect public
renvoie les coordonnées et dimensions de l'objet
────────────────────────────────────────────────────────────────────────────
utilisation
void rect (XRec& rec)
paramètres
rec référence de XRec
assertions
rec != 0
description
rect() renvoie dans la structure XRec les coordonnées et dimensions de
l'objet.
Les coordonnées sont exprimées relativement à l'écran et non pas à la
fenêtre propriétaire.
La structure XRec a le format suivant :
int row ; numéro de ligne supérieure
int col ; numéro de colonne gauche
int wdt ; largeur
int hgh ; hauteur
voir aussi
XWin::rect()
════════════════════════════════════════════════════════════════════════════
XObj::stat public
renvoie l'état de la fenêtre propriétaire
────────────────────────────────────────────────────────────────────────────
utilisation
int stat (void)
description
stat() renvoie l'état courant de la fenêtre propriétaire de l'objet.
voir aussi
XWin::stat()
════════════════════════════════════════════════════════════════════════════
XObj::topw public
vérifie l'activité de la fenêtre propriétaire
────────────────────────────────────────────────────────────────────────────
utilisation
int topw (void)
description
topw() vérifie si la fenêtre propriétaire de l'objet est active.
topw() renvoie 0 si la fenêtre n'est pas active et une valeur non nulle
dans le cas contraire.
voir aussi
XObj::stat(), XWin::stat()
════════════════════════════════════════════════════════════════════════════
XObj::type public
renvoie le type de l'objet
────────────────────────────────────────────────────────────────────────────
utilisation
int type (void)
description
type() renvoie le type de l'objet.
Chaque objet dérivé de la classe XObj possède un identificateur de type
unique conservé lors de sa construction.
voir aussi
objets...