Vous êtes sur la page 1sur 26

beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 1 de 26

Microstation Development Language

Jour 2

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 2 de 26

Table des matières

Installation des outils de développement MDL ________________________________________ 3


Concepts généraux de MDL _______________________________________________________ 4
Définition_____________________________________________________________________ 4
Les divers fichiers entrant dans la conception d’une application MDL______________________ 4
Un petit exemple d’application MDL _______________________________________________ 4
Explication de la structure de cette application _______________________________________ 5
Description d’une zone d’édition de texte ____________________________________________ 8
Description d’un bouton à options __________________________________________________ 9
Description d’un bouton à bascule ________________________________________________ 10
Description de l’outil de création de boîte de dialogue _________________________________ 11
Démarrage de l’outil ___________________________________________________________ 11
Pour créer un nouveau fichier de ressource ____________________________________ 12
Pour créer une nouvelle boîte de dialogue _____________________________________ 12
Les divers items disponibles dans RDE _____________________________________________ 12
Les items non gérés par RDE ____________________________________________________ 13
Placement des items dans la boîte de dialogue _______________________________________ 13
Pour répartir des items verticalement de manière régulière ________________________ 14
Pour aligner des items ____________________________________________________ 14
Pour répartir des items de manière régulière sur la largeur de la boîte de dialogue _____ 14
Pour répartir des items de manière régulière sur la hauteur de la boîte de dialogue _____ 14
Pour centrer des items verticalement ou horizontalement _________________________ 14
Pour rendre des items de taille identique ______________________________________ 15
Pour manipuler les items avec précision ______________________________________ 15
Comment générer les fichiers sources des ressources __________________________________ 15
Association d’une variable à un item_______________________________________________ 16
Point de vue du fichier des ressources ____________________________________________ 16
Point de vue du fichier des sources (exécutable) ____________________________________ 16
Association des points d’acceuils (hooks) ___________________________________________ 18
Cas d’un item sans point d’acceuil ______________________________________________ 18
Cas d’un item ayant un point d’acceuil ___________________________________________ 18
Comment associer une fonction hook à un item ? _______________________________ 19
Les listings des diverses applications _______________________________________________ 21
L’application Dialog ___________________________________________________________ 21

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 3 de 26

Installation des outils de développement MDL


L'installation des outils de développement de MicroStation s'effectue lors de
l'installation de MicroStation lui-même. Pour cela, recherchez sur le CD adéquat le
programme Setup.exe: exécutez-le. Dans la fenêtre Installation de MicroStation,
sélectionnez la case à cocher Outils & exemples MDL. Si MicroStation est déjà
installé, vous pouvez désélectionner les autres cases à cocher, dans ce cas
uniquement les fichiers nécessaires au langage MDL seront installés. Cliquez ensuite
le bouton Installer.

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 4 de 26

Concepts généraux de MDL

Définition
Le langage MDL est un langage C (norme ANSI) assorti de bibliothèques de fonctions
permettant de créer, manipuler des éléments MicroStation ainsi que de gérer des
boîtes de dialogue ou des palettes d’outils.
La base de MDL étant le langage C, il hérite de sa puissance ainsi que de sa
flexibilité, il hérite également de la complexité de ce langage.
Certains légers détails le différencient cependant du langage C : nous en parlerons
lorsque ceux-ci se présenteront.

Les divers fichiers entrant dans la conception d’une application MDL


MDL connaît principalement quatre genres de fichiers :
• Les fichiers d’entêtes contenant principalement des définitions
• Les fichiers sources contenant essentiellement la partie exécutable
• Les fichiers ressources contenant essentiellement les boîtes de dialogue
• Les fichiers contenant les directives de compilation (makefiles)

Un petit exemple d’application MDL


L’application Dialog est composée des fichiers suivants :
• Dialog.h : contient les divers identificateurs des items de la boîte de
dialogue ;
• Dialotxt.h : contient les divers textes présents dans la boîte de dialogue ;
• Dialog.r : contient la définition de la boîte de dialogue elle-même ;
• Dialog.mc : contient le code source de l’application ;
• Dialog.mke : contient les diverses règles concernant la compilation des
ressources, des sources et l’édition des liens.
Voici les étapes permettant de générer l’application « dialog.ma » :
1. Ouvrir une fenêtre MS-Dos ;
2. Se placer dans le sous-répertoire « Dialog » du répertoire dans lequel vous avez
décompressé le fichier « MdlTutor.zip » ;
3. Exécuter la ligne de commande suivante :
Bmake dialog.mke

Si l’application « dialog.ma » ne se trouve pas dans le sous-répertoire .\MA, il est


possible qu’un des chemins d’accès indispensables à la compilation des
applications MDL soit absent ou incorrect ou encore que lors de l’installation de
MicroStation, les outils de développement n’aient pas été installés.

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 5 de 26

Pour corriger les chemins, vous pouvez éditer le fichier SETVAR.BAT de manière
à le modifier pour correspondre à votre installation, sauvez-le et ensuite, à partir
d’une fenêtre MS-Dos, exécutez-le avant de lancer la ligne de commande décrite
au point 3 ci-dessus.

Si après cette manipulation l’application « dialog.ma » n’est toujours pas présente


dans le répertoire .\MA, il est possible que les outils de développement MDL ne
soient pas installés. Pour les installer, référez-vous au paragraphe « Installation
des outils de développement MDL ».

4. Démarrer MicroStation
5. A partir du menu « Outils », choisir l’option « Application MDL » qui ouvrira une
boîte de dialogue permettant de démarrer une application. Cliquez le bouton
« Parcourir » et recherchez l‘application « dialog.ma ». Cliquez ensuite « Ok » : la
fenêtre suivante devrait apparaître à l’écran.

Explication de la structure de cette application

Comme nous l’avons vu ci-dessus, différents fichiers sont nécessaires à la contitution


de cette application. Le premier fichier que nous analyserons est Dialog.r.

Ce fichier contient les ressources de l’application : ce sont les boîtes de dialogue et


ses divers composants.

Chaque composant (souvent appelé item) est identifié par un nombre. Normalement,
deux items de type différent peuvent avoir le même nombre les identifiant.
Techniquement, il est plus simple d’identifier de manière unique chaque item.
Théoriquement, on pourrait spécifier de manière explicite le numéro dans le fichier de
ressources et, plus tard, dans les fichiers sources pour ouvrir une boîte de dialogue
par exemple. Il suffit de dire que la boîte de dialogue est identifiée par le numéro
13764 et ensuite de dire, lors de l’exécution du programme, d’ouvrir la boîte de
dialogue ayant le numéro 13764.

Avec une seule boîte de dialogue, il n’est déjà pas évident de se souvenir du numéro
d’identification affecté à la boîte de dialogue, on imagine ce que cela peut donner
lorsqu’il y en a plusieurs.

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 6 de 26

Heureusement, une technique simple peut nous faciliter la tâche. Pour cela, il suffit
d’affecté un nombre à un nom et d’utiliser ce nom comme identifiant. La liste des
identifiants se trouvera dans un fichier particulier, il suffira ensuite d’inclure ce fichier
pour avoir accès aux noms définissant les nombres. Au moment de la pré-
compilation, le nom est remplacé de manière littérale par la valeur qui lui est affectée.
Généralement on crée un fichier ayant l’extension « .h » (fichier header ou fichier
d’entête) destiné à contenir l’ensemble de ces définitions.

//
// Exemple de fichier d’entête : monfichier.h
//
#define DIALOGID_MaBoite 1
#define TOGGLEID_Bascule 2
#define TEXTID_Texte 3
#define OPTIONBUTTONID_Option 4

Par convention, les valeurs utilisées pour les applications utilisateur seront
positives, au contraire, les valeurs affectées aux items MicroStation sont
négatives.

Analysons maintenant les ressources nécessaires à la création de la boîte de


dialogue montrée ci-dessus :

/*----------------------------------------------------------------------+
| |
| Ma boîte de dialogue |
| |
+----------------------------------------------------------------------*/
DialogBoxRsc DIALOGID_MaBoite =
{
DIALOGATTR_DEFAULT,
38.83*XC, 9.17*YC,
NOHELP, MHELP, NOHOOK, NOPARENTID,
TXT_DBOX_MaBoite,
{
{
{ 4.67*XC, 2.33*YC,29.83*XC, 0},
Text, TEXTID_Texte, ON, TEXT_MASK_LABELABOVE, "", ""
},
{
{ 4.33*XC, 4.33*YC, 0, 0},
ToggleButton, TOGGLEID_Bascule, ON, 0, "", ""
},
{
{23.67*XC, 4.33*YC, 0, 0},
OptionButton, OPTIONBUTTONID_Option, ON, 0, "", ""
},
{
{ 5.00*XC, 7.00*YC,12.00*XC, 0},
PushButton, PUSHBUTTONID_OK, ON, 0, "", ""
},
{
{21.50*XC, 7.00*YC,12.00*XC, 0},
PushButton, PUSHBUTTONID_Cancel, ON, 0, "", ""

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 7 de 26

},
{
{ 2.17*XC, 0.42*YC,34.50*XC, 6.08*YC},
GroupBox, 0, ON, 0, "", ""
},
}
};
/*----------------------------------------------------------------------+
| |
| Texte: Text Item Resource |
| |
+----------------------------------------------------------------------*/
DItem_TextRsc TEXTID_Texte =
{
NOCMD, LCMD, NOSYNONYM,
NOHELP, LHELP, NOHOOK,
NOARG, 20, "%s", "%s",
"", "", NOMASK,
TEXT_NOCONCAT,
TXT_DTXT_Texte,
"chTexte"
};
/*----------------------------------------------------------------------+
| |
| Option: OptionButton Item Resource |
| |
+----------------------------------------------------------------------*/
DItem_OptionButtonRsc OPTIONBUTTONID_Option =
{
NOSYNONYM, NOHELP, LHELP,
NOHOOK, OPTNBTNATTR_NEWSTYLE,
TXT_OBTN_Option,
"iOption",
{
{NOTYPE, NOICON, NOCMD, LCMD, 1, NOMASK, ON, TXT_OBTN_Valeur1},
{NOTYPE, NOICON, NOCMD, LCMD, 2, NOMASK, ON, TXT_OBTN_Valeur2},
{NOTYPE, NOICON, NOCMD, LCMD, 3, NOMASK, ON, TXT_OBTN_Valeur3},
}
};
/*----------------------------------------------------------------------+
| |
| Bascule ToggleButton Item Resource |
| |
+----------------------------------------------------------------------*/
DItem_ToggleButtonRsc TOGGLEID_Bascule =
{
NOCMD, LCMD, NOSYNONYM,
NOHELP, LHELP, NOHOOK, NOARG,
NOMASK, NOINVERT,
TXT_TBTN_Bascule,
"bBascule"
};

Comme nous pouvons l’observer, nous avons des définitions de quatre types
différents :
1. La boîte de dialogue destinée à recevoir les divers items ;
2. Des items spécifiques déclarés localement ;
3. Des items à usage général ;
4. Des items ne nécessitant pas de déclaration particulières.

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 8 de 26

La définition de la boîte de dialogue, c’est-à-dire globalement du rectangle et de la


barre de titre, nécessite les informations suivantes :
• La spécification de ses dimensions (38.83*XC, 9.17*YC);
• Un texte représentant le titre (TXT_DBOX_MaBoite qui est un define
au même titre que les identificateurs et qui a la valeur « Ma boîte de
dialogue »);
• Le type de boîte de dialogue que l’on désire afficher
(DIALOGATTR_DEFAULT).

Pour compléter la définition de la boîte de dialogue, il est nécessaire d’énumérer et de


positionner les items qui s’y trouveront.

Classiquement, chaque item placé devra être également décrit de manière précise.
La description de ces items fonction du type de l’item lui-même : une zone d’édition
de texte ayant d’autres propriétés qu’un bouton poussoir par exemple.

Description d’une zone d’édition de texte


DItem_TextRsc TEXTID_Texte = Identificateur du texte
{
NOCMD, LCMD, NOSYNONYM, Point d’acceuil (hook)
NOHELP, LHELP, NOHOOK,
NOARG, 20, "%s", "%s", Format en mémoire
"", "", NOMASK,
TEXT_NOCONCAT, Format de l’affichage
TXT_DTXT_Texte,
"chTexte" Nombre de car. acceptés
};
Texte affiché à côté de la zone

Variable dans laquelle sera


stockée la valeur introduite

• Identificateur du texte : C’est la valeur qui permettra d’identifier de manière


absolue cet item.
• Point d’acceuil (hook) : C’est un identificateur qui permettra d’établir un lien
entre l’item et une fonction à exécuter en réaction à certains événement (par
ex. : vérifier la validité d’un texte lorsque l’on quitte la zone d’édition).
• Format en mémoire : Comme nous l’avons vu lors de la première journée, le
langage C permet de formater les valeurs de manière très souple (cf. printf).
Le formatage mémoire permet de conserver la valeur introduite dans un
format particulier : ici la valeur sera conservée sous la forme d’une chaîne de
caractères.
• Format de l’affichage : Identique au précédent sauf que la forme visible de la
valeur introduite peut être différente de celle conservée en mémoire : par
exemple, une zone de texte destinée à recevoir une mesure de longueur
pourrait être exprimé en %.3lf pour son affichage et en %lf pour le contenu en
mémoire.
Les conséquences de cela sont :

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 9 de 26

o Le calcul sera plus précis puisque l’utilisateur peut introduire un


nombre du type 12.476446
o Les affichages seront plus propres dans le sens où seulement trois
décimales seront affichées (donc pas de 4.99999999999m)
Nombre de caractères acceptés : Spécifie le nombre maximal de caractère qu’il est
possible d’introduire dans cette zone. Nous avons vu hier qu’une chaîne de caractère
devait être définie en fonction du nombre de caractère maximal qu’elle pourrait
contenir + 1. Si on autorise 30 caractères pour une chaîne dimensionnée à 20
caractères, un problème de débordement apparaîtra très certainement si l’utilisateur
introduit plus de 19 caractères (20 – 1 caractère 0 de fin de chaîne)
• Texte affiché à côté de la zone : Spécifie un texte décrivant ce que doit
contenir la zone d’édition de texte
• Variable : Donnera le nom associé à la variable destinée à contenir la valeur
introduite dans le champ d’édition du texte. Nous verrons plus tard comment
l’association entre ce nom et la variable se fait. Il est à noter que le type de la
variable doit, bien entendu, être compatible avec les formatages de mémoire
et d’affichage décrits ci-dessus.

Description d’un bouton à options


DItem_OptionButtonRsc OPTIONBUTTONID_Option =
{
NOSYNONYM, NOHELP, LHELP, Identificateur du bouton à options
NOHOOK, OPTNBTNATTR_NEWSTYLE,
Point d’acceuil (hook) TXT_OBTN_Option,
"iOption", Texte affiché à côté de la zone
{
{NOTYPE, NOICON, NOCMD, LCMD, 1, NOMASK, ON, TXT_OBTN_Valeur1},
{NOTYPE, NOICON, NOCMD, LCMD, 2, NOMASK, ON, TXT_OBTN_Valeur2},
{NOTYPE, NOICON, NOCMD, LCMD, 3, NOMASK, ON, TXT_OBTN_Valeur3},
}
}; Variable dans laquelle sera
Liste des valeurs possibles du stockée la valeur choisie
bouton à options

• Identificateur du bouton à options : C’est la valeur qui permettra d’identifier de


manière absolue cet item
• Point d’acceuil (hook) : C’est un identificateur qui permettra d’établir un lien
entre l’item et une fonction à exécuter en réaction à certains événement (par
ex. : griser certains items en fonction de l’option choisie)
• Texte affiché à côté du bouton à options : Spécifie un texte décrivant ce que
contient le bouton à options
• Variable : Donnera le nom associé à la variable destinée à contenir la valeur
sélectionnée dans le bouton à options. Nous verrons plus tard comment
l’association entre ce nom et la variable se fait.
• Liste des valeurs : Donne la liste des différentes options. A chaque option est
associée une description (Option 1, Option 2,…) ainsi qu’une valeur (unique)
permettant de l’identifier.

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 10 de 26

Remarques :

• Il est à remarquer que la variable ne doit pas être formatée. Effectivement, cet
item doit impérativement être associé à une variable de type int ou long
(entier de 32 bit).

• Le cinquième argument dans la liste des options, donne la valeur qui sera
affectée à la variable. Cette valeur doit, pour être utile, être unique.

Description d’un bouton à bascule


DItem_ToggleButtonRsc TOGGLEID_Bascule =
{
NOCMD, LCMD, NOSYNONYM, Identificateur du bouton à bascule
NOHELP, LHELP, NOHOOK, NOARG,
0x0001, NOINVERT, Point d’acceuil (hook)
TXT_TBTN_Bascule,
"bBascule" Texte affiché à côté de la zone
};
Variable dans laquelle sera
stockée la valeur introduite
Masque

• Identificateur du bouton à bascules : C’est la valeur qui permettra d’identifier


de manière absolue cet item
• Point d’acceuil (hook) : C’est un identificateur qui permettra d’établir un lien
entre l’item et une fonction à exécuter en réaction à certains événement (par
ex. : griser certains items en fonction de l’état du bouton)
• Texte affiché à côté du bouton à bascule : Spécifie un texte décrivant ce que
contient le bouton à options
• Variable : Donnera le nom associé à la variable destinée à contenir l’état du
bouton à bascule. Nous verrons plus tard comment l’association entre ce nom
et la variable se fait.
• Masque : Cet argument permet de faire des opérations relativement
compliquées. Nous retiendrons simplement que le fait de lui attribuer la valeur
0x0001 (c’est-à-dire 1) aura pour résultat d’assigner la valeur 1 à la variable
lorsque l’item est coché et 0 lorsque l’item est décoché.

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 11 de 26

Description de l’outil de création de boîte de dialogue

Démarrage de l’outil
Le moyen le plus simple pour démarrer RDE est de démarrer l’application par la ligne
de commande suivante :
MDL LOAD RDE
Un autre moyen, est de choisir l’interface MDE au démarrage de MicroStation. A ce
moment, un menu donne la possibilité de lancer l’outil RDE.

En règle générale, étant donné le manque de stabilité de cette application, elle ne


sera utilisée que pour généré la première mouture des boîtes de dialogues. Le reste
devra, hélas, être fait manuellement dans le code source des ressources tel que nous
l’avons vu précédemment.
Il y aurait, semble-t-il, des efforts fait dans ce sens pour MicroStation V8.

Il est probable que nous ayons des problèmes dans les exercices à venir du fait
de la faible qualité de réalisation de l’application RDE. Ceci n’est pas du à un
manque de préparation de la formation mais bien au mauvais fonctionnement de
ce programme.

Lorsque l’application RDE est démarrée, nous nous retrouvons face à cette boîte de
dialogue :

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 12 de 26

Pour créer un nouveau fichier de ressource

• Cliquez sur le menu « File » et choisissez l’option « New » ;


• A l’aide du bouton à options « List Files of Type : », choisissez : « MDL Binary
Resources [*.rsc] » ;
• Déplacez-vous dans le répertoire C:\MDLTutor\Essai et créez un fichier appelé
« essai1.rsc »

RDE permet (théoriquement) de gérer plusieurs fichiers de ressources


simultanément : il n’est pas conseillé de le faire !

RDE permet de gérer divers types de ressource : pour l’instant nous nous arrêterons
aux ressources concernant les boîtes de dialogue.

Pour créer une nouvelle boîte de dialogue

• Dans le menu « Resource », choisissez la sous-option « Dialog » de l’option


« Add » ;
• Trois nouvelles boîtes de dialogue apparaissent à l’écran :

2 3

1) Une boîte à outils contenant les divers items supportés par RDE ;
2) Une boîte de dialogue contenant la liste des items contenus dans la boîte de
dialogue. Cette boîte contient également un menu permettant de sauver le fichier
de ressources de votre boîte de dialogue (Dialog -> Save To Existing) ;
3) Une boîte complètement vide destinée à recevoir les divers items désirés.

Les divers items disponibles dans RDE


• zone d’édition de texte (text)

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 13 de 26

• label (texte non éditable) (label)


• bouton à bascule (toggle button)
• cadre (group box)
• bouton à options (option button)
• barre de défillement (scroll bar) peu utilisé
• bouton poussoir (push button)
• sélecteur de couleur (color picker)
• plan des niveaux (level map)
• échelle (scale) peu utilisé
• bouton radio (radio button)
• sash (sash) peu utilisé
• item générique (generic)
• zone de texte multiligne (multiline text)
• liste déroulante (list box)
• séparateur horizontal (horizontal separator)
• séparateur vertical (vertical separator)
• menu (menu bar)
• combo box (combo box)
• spin box (spin box) peu utilisé

Les items non gérés par RDE


• sélecteur de niveau (level picker)
• les boîtes à onglet (tabbed dialog box)
• les palettes et boîtes à outils (palettes and toolbox)

La gestion des items non gérés par RDE doit se faire de manière purement
manuelle ce qui n’est pas nécessairement simple dans le cas des palettes et des
boîtes à outils.

Placement des items dans la boîte de dialogue


Pour cela, il suffit de cliquer sur le type d’item que vous désirez placer, et d’ensuite
cliquer sur la boîte de dialogue à l’endroit désiré. Les items sont d’abord placés avec
une dimension par défaut, libre à vous d’ensuite changer leur taille.

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 14 de 26

Pour répartir des items verticalement de manière régulière

• Sélectionner les divers items dans l’ordre. Le premier item sélectionné servira de
référence
• Sélectionner l’option « Space vertically » dans le menu « Aligment ». Les items
seront répartis de manière à avoir le même espace entre eux dans la direction
verticale. Il est possible de modifier la valeur de cet espace en modifiant la valeur
contenue dans la boîte que vous trouverez en sélectionnant l’option
« Preferences » du menu « Options »

Pour aligner des items

• Sélectionner les divers items dans l’ordre. Le premier item sélectionné servira de
référence
• Choisissez dans le menu « Aligment » une des options « Align left », « Align
right », « Align bottom » ou « Align top » de manière à aligner les items par
rapport à leur côté gauche, droit, bas ou haut.

Pour répartir des items de manière régulière sur la largeur de la boîte de


dialogue

• Sélectionner les divers items dans l’ordre. Le premier item sélectionné servira de
référence
• Sélectionner l’option « Spread horizontally » dans le menu « Alignment »

Cet outil est le plus souvent utilisé pour répartir les boutons dans les boîtes de
dialogue.

Pour répartir des items de manière régulière sur la hauteur de la boîte de


dialogue

• Sélectionner les divers items dans l’ordre. Le premier item sélectionné servira de
référence
• Sélectionner l’option « Spread vertically » dans le menu « Alignment »

Pour centrer des items verticalement ou horizontalement

• Sélectionner les divers items dans l’ordre. Le premier item sélectionné servira de
référence
• Sélectionner l’option « Center on Horizontal » ou « Center on Vertical » du menu
« Alignment »

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 15 de 26

Pour rendre des items de taille identique

• Sélectionner les divers items dans l’ordre. Le premier item sélectionné servira de
référence
• Sélectionner l’option « Make same size » dans le menu « Aligment »

Pour manipuler les items avec précision

• Dans le menu « Options », sélectionner l’option « Position adjustment ». La boîte


de dialogue suivante s’ouvre :

Comment générer les fichiers sources des ressources


Lors de la création du fichier destiné à contenir notre boîte de dialogue, nous avions
spécifié l’utilisation du filtre « MDL Binary Resource [*.rsc] ». Ceci a eu pour
conséquence la génération d’un fichier binaire illisible mais plus pratique à
transporter puisque unique. Comme nous l’avons vu précédement, RDE ne brille pas
par ses qualités de gestion des boîtes de dialogue. De ce fait, lorsqu’une boîte de
dialogue est jugée satisfaisante il est préférable de la sauver (Menu Dialog, option
Save). Lors de cette opération de sauvegarde, RDE demande également si on désire
sauver les sources des ressources : à cette question, il convient de répondre par
l’affirmative. Les fichiers sources seront sauvés dans le même répertoire que celui où
se trouve le fichier binaire.

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 16 de 26

Association d’une variable à un item


Un certain nombre d’items peut avoir une variable associé. L’avantage de cette
technique, est que lors de la modification de l’état de l’item, la variable reflètera
l’action de l’utilisateur.
Reprenons l’exemple du bouton à options défini ci-dessus :

Point de vue du fichier des ressources

DItem_OptionButtonRsc OPTIONBUTTONID_Option =
{
NOSYNONYM, NOHELP, LHELP,
NOHOOK, OPTNBTNATTR_NEWSTYLE,
TXT_OBTN_Option,
"iOption",
{
{NOTYPE, NOICON, NOCMD, LCMD, 1, NOMASK, ON, TXT_OBTN_Valeur1},
{NOTYPE, NOICON, NOCMD, LCMD, 2, NOMASK, ON, TXT_OBTN_Valeur2},
{NOTYPE, NOICON, NOCMD, LCMD, 3, NOMASK, ON, TXT_OBTN_Valeur3},
}
}; Variable dans laquelle sera
stockée la valeur introduite
Liste des valeurs possibles du
bouton à options

Etat du bouton

Valeur de iOption 1 2 3

Point de vue du fichier des sources (exécutable)

Comme nous l’avons vu, au niveau du fichier des ressources, seul un texte
d’identification fait référence à la variable (il est spécifié entre guillemets).

Regardons maintenant le fichier sources et vérifions la manière dont sont déclarées


les variables.

////
//// Déclaration des variables
////
int iOption = 1;
boolean bBascule = FALSE;
char chTexte[21];

iOption est déclarée en tant qu’entier (32bit) puisque cette variable sera attachée à un
bouton à option
bBascule est déclarée en tant que boolean (qui est en fait un int – voir déclaration
dans basetype.h)

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 17 de 26

chTexte est déclarée comme un string (tableau de char) d’une longueur de 21


caractères – ce qui est normal puisque le nombre de caractères autorisés pour
l ‘édition est de 20 et qu’il est nécessaire de prévoir un caractère de terminaison
(caractère 0) de fin de chaîne de caractères.

Il est précieux de ne pas déclarer des tableaux de taille excessive, la mémoire


n’étant pas une ressource inépuisable !

Pour l’instant, nous avons deux choses :


• Des variables déclarées dans le fichier source ;
• Des noms d’identification de variable dans le fichier ressource.

Il est maintenant indispensable d’établir un lien entre la zone mémoire identifiée au


niveau du fichier par la variable iOption et la chaîne de caractères « iOption » écrite
dans le fichier des ressources.
Pour cela MDL met à la disposition du programmeur des fonctions permettant de
définir un lot de correspondance entre des mots (le « iOption » écrit dans le fichier
des ressources) et la variable y correspondant (le iOption déclaré dans le fichier
source).
Cette mise en correspondance se fait en deux étapes :
• La récupération du pointeur (pSet) sur le set d’expression à mettre en
correspondance (mdlCExpression_initializeSet)
• La publication des correspondances pourra se faire à l’aide des fonctions
spécifiques à chaque type de variable (mdlDialog_publishBasicArray – pour les
string, mdlDialog_publishBasicVariable – pour les int, long, double, boolean,…)

La fonction de publication des variables peut donc s’écrire :


void PublicationDesVariables( void ) Récupération d’un pointeur
{ sur le set d’expression
char *pSet;
pSet = mdlCExpression_initializeSet( VISIBILITY_DIALOG_BOX|
VISIBILITY_DEBUGGER,
0,
FALSE Si le pointeur est NULL, il
); y a un problème !

assert(pSet);

mdlDialog_publishBasicArray( pSet, On publie le tableau pointé par


&charType, chTexte sous le nom « chTexte »
"chTexte", dans le set d’expression. Le tableau
chTexte, est défini comme contenant des
sizeof( chTexte ) char (charType).
);

mdlDialog_publishBasicVariable( pSet, On publie la correspondance entre


&longType, la variable iOption et son nom
"iOption", « iOption ». Le type de cette
&iOption variable et long (longType).
);

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 18 de 26

mdlDialog_publishBasicVariable( pSet, On publie la correspondance entre


&longType, la variable bBascule et son nom
"bBascule", « bBascule ». Le type de cette
&bBascule variable est long car le type boolean
); n’est pas natif dans MDL
}

Association des points d’acceuils (hooks)

Nous avons déjà observé que lorsque l’on clique sur un item la boîte de dialogue peut
« réagir » (par ex. : la boîte disparaît de l’écran lorsque l’on clique le bouton [Ok]).
Ceci est effectué par le biais de fonctions associées aux items. Chaque item peut
avoir au maximun une fonction associée. Cette fonction recevant en paramètre une
structure dont le membre le plus intéressant est la description de l’évènement venant
d’arriver (clic, double-clic, synchronisation,…).
Lorsqu’un item ne désire pas avoir de fonction associée, il suffit de spécifier la valeur
NOHOOK à l’endroit prévu à cet effet dans la définition de la ressource de cet item.
Au contraire, il est important de donner un valeur unique à l’identificateur de hook de
manière à ne pas avoir d’ambiguïté lors du traitement du message. A cet effet, je
recommande d’affecté l’identificateur de l’item comme identificateur de hook.

Cas d’un item sans point d’acceuil

DItem_ToggleButtonRsc TOGGLEID_Bascule =
{
NOCMD, LCMD, NOSYNONYM,
NOHELP, LHELP, NOHOOK, NOARG,
0x0001, NOINVERT,
TXT_TBTN_Bascule,
"bBascule"
};

Aucun point d’acceuil (hook) prévu. Il n’y aura pas de


notification d’événement.

Cas d’un item ayant un point d’acceuil

DItem_ToggleButtonRsc TOGGLEID_Bascule =
{
NOCMD, LCMD, NOSYNONYM,
NOHELP, LHELP, TOGGLEID_Bascule, NOARG,
0x0001, NOINVERT,
TXT_TBTN_Bascule,
"bBascule"
};

Un identificateur de point d’acceuil à été défini. Il sera


désormais possible d’associé cet item à une fonction
destinée à traiter les événements intervenant sur cet item.

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 19 de 26

Comment associer une fonction hook à un item ?

• Au niveau du fichier des ressources, il suffit simplement d’affecter une valeur à


l’endroit prévu à cet effet. C’est la seule chose à faire à ce niveau.
• Dans le fichier source (exécutable) il y a lieu de faire trois choses :
- Définir la liste des associations Identificateur de point d’acceuil / Nom de la
fonction de traitement des évènements ;
- Publier cette structure afin que MicroStation en prenne connaissance ;
- Ecrire les fonctions de traitement des évènements ;
- Placer en tête du fichier les prototypes des fonctions de traitement des
évènements.

1. Définition de la liste des associations


Private DialogHookInfo HooksList[] =
{
{ TOGGLEID_Bascule, Dialog_traitementBascule},
};

2. Publication de la structure HooksList


mdlDialog_hookPublish( sizeof(HooksList)/sizeof(DialogHookInfo),
HooksList
);

3. Ecriture de la fonction de traitement des évènements


void Dialog_traitementBascule (DialogItemMessage *dimP )
{
dimP->msgUnderstood = TRUE;

switch (dimP->messageType)
{
case DITEM_MESSAGE_STATECHANGED:
mdlDialog_openInfoBox( “bBascule vient d’être modifié!” );
break;
default:
dimP->msgUnderstood = FALSE;
break;
}
}

4. Ecriture du prototype de la fonction


void Dialog_traitementBascule (DialogItemMessage *dimP );

Le prototype de la fonction doit impérativement précéder la définition de la


structure (DialogHookInfo) contenant les correspondances entre les
identificateurs de points d’acceuil et les fonctions de traitement des évènements
survenant sur les items.

Si nous analysons le code écrit, nous constatons que le prototype d'une fonction de
point d'acceuil est figé et que la fonction reçoit toujours en paramètre un pointeur sur
une structure DialogItemMessage. Un des membres importants de cette structure
est sans aucun doute msgUnderstood (message compris) qui permettra à
MicroStation de savoir si le message a été traité par la fonction de point d'acceuil ou

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 20 de 26

s'il doit le traiter lui-même. Mais plus important encore est la variable messageType
qui permettra de déterminer le type d'action qui a été opérée sur l'item: dans le cas
présent, une action est opérée lorsque la variable associée à l'item case à cocher
change d'état. Une case à cocher n'ayant que deux états possibles (cochée / non
cochée), la variable associée aura également deux états (ici 0 et 1 ce qui correspond
à FALSE et TRUE).

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 21 de 26

Les listings des diverses applications

L’application Dialog
• Le fichier DIALOG.H
/*---------------------------------------------------------+
| |
| Fichier : dialog.h |
| |
| Auteur : Philippe HALET (c) 2000 |
| |
| Date : 24 Nov 2000 |
| |
| Modif. : |
| |
+---------------------------------------------------------*/

#define DIALOGID_MaBoite 1
#define TOGGLEID_Bascule 2
#define TEXTID_Texte 3
#define OPTIONBUTTONID_Option 4

• Le fichier DIALOTXT.H
/*---------------------------------------------------------------------+
| |
| Fichier : dialotxt.h |
| |
| Auteur : Philippe HALET (c) 2000 |
| |
| Date : 24 Nov 2000 |
| |
| Modif. : |
| |
+---------------------------------------------------------------------*/

#define TXT_TBTN_BASCULE "Bascule"


#define TXT_DTXT_TEXTE "Texte:"
#define TXT_DBOX_MABOITE "Ma boîte de dialogue"
#define TXT_OBTN_OPTION "~Options:"
#define TXT_OBTN_VALEUR2 "Valeur ~2"
#define TXT_OBTN_VALEUR3 "Valeur ~3"
#define TXT_OBTN_VALEUR1 "Valeur ~1"

• Le fichier DIALOG.R
/*---------------------------------------------------------------------+
| |
| Fichier : dialog.r |
| |
| Auteur : Philippe HALET (c) 2000 |
| |
| Date : 24 Nov 2000 |
| |
| Modif. : |
| |
+---------------------------------------------------------------------*/

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 22 de 26

/*---------------------------------------------------------------------+
| |
| Include Files |
| |
+---------------------------------------------------------------------*/
#include <rscdefs.h>
#include <cmdclass.h>
#include <dlogbox.h>
#include <dlogids.h>
#include <keys.h>
#include "dialotxt.h"
#include "dialog.h"
/*---------------------------------------------------------------------+
| |
| Ma boîte de dialogue Dialog Box |
| |
+---------------------------------------------------------------------*/
DialogBoxRsc DIALOGID_MaBoite =
{
DIALOGATTR_DEFAULT,
38.83*XC, 9.17*YC,
NOHELP, MHELP, NOHOOK, NOPARENTID,
TXT_DBOX_MaBoite,
{
{
{ 4.67*XC, 2.33*YC,29.83*XC, 0},
Text, TEXTID_Texte, ON, TEXT_MASK_LABELABOVE, "", ""
},
{
{ 4.33*XC, 4.33*YC, 0, 0},
ToggleButton, TOGGLEID_Bascule, ON, 0, "", ""
},
{
{23.67*XC, 4.33*YC, 0, 0},
OptionButton, OPTIONBUTTONID_Option, ON, 0, "", ""
},
{
{ 5.00*XC, 7.00*YC,12.00*XC, 0},
PushButton, PUSHBUTTONID_OK, ON, 0, "", ""
},
{
{21.50*XC, 7.00*YC,12.00*XC, 0},
PushButton, PUSHBUTTONID_Cancel, ON, 0, "", ""
},
{
{ 2.17*XC, 0.42*YC,34.50*XC, 6.08*YC},
GroupBox, 0, ON, 0, "", ""
},
}
};
/*---------------------------------------------------------------------+
| |
| Texte: Text Item Resource |
| |
+---------------------------------------------------------------------*/
DItem_TextRsc TEXTID_Texte =
{
NOCMD, LCMD, NOSYNONYM,
NOHELP, LHELP, NOHOOK,
NOARG, 20, "%s", "%s",
"", "", NOMASK,
TEXT_NOCONCAT,
TXT_DTXT_TEXTE,
"chTexte"
};

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 23 de 26

/*---------------------------------------------------------------------+
| |
| Option: OptionButton Item Resource |
| |
+---------------------------------------------------------------------*/
DItem_OptionButtonRsc OPTIONBUTTONID_Option =
{
NOSYNONYM, NOHELP, LHELP,
NOHOOK, OPTNBTNATTR_NEWSTYLE,
TXT_OBTN_OPTION,
"iOption",
{
{NOTYPE, NOICON, NOCMD, LCMD, 1, NOMASK, ON, TXT_OBTN_VALEUR1},
{NOTYPE, NOICON, NOCMD, LCMD, 2, NOMASK, ON, TXT_OBTN_VALEUR2},
{NOTYPE, NOICON, NOCMD, LCMD, 3, NOMASK, ON, TXT_OBTN_VALEUR3},
}
};
/*---------------------------------------------------------------------+
| |
| Bascule ToggleButton Item Resource |
| |
+---------------------------------------------------------------------*/
DItem_ToggleButtonRsc TOGGLEID_Bascule =
{
NOCMD, LCMD, NOSYNONYM,
NOHELP, LHELP, NOHOOK, NOARG,
NOMASK, NOINVERT,
TXT_TBTN_BASCULE,
"bBascule"
};

• Le fichier DIALOG.MC
/*
+-----------------------------------------------------------------------+
| |
| Fichier : dialog.mc |
| |
| Auteur : Philippe HALET |
| |
| Date : 28/11/2000 |
| |
| Descr : |
| |
+-----------------------------------------------------------------------+
*/

////
//// Includes généraux
////
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <dlogitem.h>
#include <mselems.h>
#include <basedefs.h>
#include <msdefs.h>
#include <global.h>
#include <tcb.h>
#include <mdl.h>
#include <stdio.h>
#include <dlogids.h>
#include <assert.h>

////
//// Prototypage des fonctions MicroStation
////

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 24 de 26

#include <msdialog.fdf>

////
//// Includes Spécifiques
////
#include "dialog.h"

////
//// Prototypage fonctions
////
void main( void );
int OuvrirRessources( void );
void PublicationDesVariables( void );
void PublicationDesPointsDAcceuil( void );
void Dialog_traitementBascule (DialogItemMessage *dimP );

////
//// Déclaration des variables
////
int iOption = 1;
boolean bBascule = FALSE;
char chTexte[21];

////
//// Déclaration des points d’acceuil
////
Private DialogHookInfo HooksList[] =
{
{ TOGGLEID_Bascule, Dialog_traitementBascule},
};

/*--------------------------------------------------------------------------
void main( void )

Description :

Retour :

Auteur : ©HDSI - Philippe HALET


Date : 28 nov. 2000
Modification :
--------------------------------------------------------------------------*/
void main( void )
{
// ouverture du fichier de ressource
if( OuvrirRessources( ) == SUCCESS )
{
int iBouton;

PublicationDesVariables();

PublicationDesPointsDAcceuil() ;

// ouverture de la boîte de dialogue et vérification


// qu'elle s'est ouverte correctement
if( mdlDialog_openModal( &iBouton, NULL, DIALOGID_MaBoite ) != TRUE )
{
// iBouton indique quel bouton a été cliqué pour quitter
// la boîte de dialogue. Le test de cette valeur permettra
// d'agir en conséquence.
switch( iBouton )
{
case ACTIONBUTTON_OK:
mdlDialog_openMessageBox( DIALOGID_MsgBoxOK,
"Vous avez cliqué le bouton <OK>",
MSGBOX_ICON_INFORMATION
);
break;

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 25 de 26

case ACTIONBUTTON_CANCEL:
mdlDialog_openMessageBox( DIALOGID_MsgBoxOK,
"Vous avez cliqué le bouton <Cancel>",
MSGBOX_ICON_INFORMATION
);
break;
}
}
}
// cette fonction force l'application a se terminer
// sinon elle reste active dans l'attente d'un évènement
mdlSystem_exit( FALSE, TRUE );
}

/*--------------------------------------------------------------------------
int OuvrirRessources( void )

Description :

Retour :

Auteur : ©HDSI - Philippe HALET


Date : 28 nov. 2000
Modification :
--------------------------------------------------------------------------*/
int OuvrirRessources( void )
{
RscFileHandle rfHandleMain;
return mdlResource_openFile( &rfHandleMain, NULL, FALSE );
}

/*--------------------------------------------------------------------------
void PublicationDesVariables( void )

Description :

Retour :

Auteur : ©HDSI - Philippe HALET


Date : 28 nov. 2000
Modification :
--------------------------------------------------------------------------*/
void PublicationDesVariables( void )
{
char *pSet;
pSet = mdlCExpression_initializeSet( VISIBILITY_DIALOG_BOX|
VISIBILITY_DEBUGGER,
0,
FALSE
);

assert(pSet);

mdlDialog_publishBasicArray( pSet,
&charType,
"chTexte",
chTexte,
sizeof( chTexte )
);

mdlDialog_publishBasicVariable( pSet,
&longType,
"iOption",
&iOption
);

mdlDialog_publishBasicVariable( pSet,
&longType,

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc


beCAD sprl

Formation MDL - Jour 2

Réf. : PHA/14/NOT/00348 Date : 8 mai 2014 Page 26 de 26

"bBascule",
&bBascule
);
}

/*--------------------------------------------------------------------------
void PublicationDesPointsDAcceuil( void )

Description :

Retour :

Auteur : ©HDSI - Philippe HALET


Date : 28 nov. 2000
Modification :
--------------------------------------------------------------------------*/
void PublicationDesPointsDAcceuil( void )
{
mdlDialog_hookPublish( sizeof(HooksList)/sizeof(DialogHookInfo),
HooksList
);
}

/*--------------------------------------------------------------------------
void Dialog_traitementBascule (DialogItemMessage *dimP )

Description :

Retour :

Auteur : ©HDSI - Philippe HALET


Date : 28 nov. 2000
Modification :
--------------------------------------------------------------------------*/
void Dialog_traitementBascule (DialogItemMessage *dimP )
{
dimP->msgUnderstood = TRUE;

switch (dimP->messageType)
{
case DITEM_MESSAGE_STATECHANGED:
mdlDialog_openInfoBox( “ bBascule vient d’être modifié!” );
break;
default:
dimP->msgUnderstood = FALSE;
break;
}
}

Ce document reste la propriété de beCAD et ne peut être reproduit, dupliqué totalement ou partiellement ni être
utilisé sans notre accord écrit.

NOT-00348-PHA (Formation MDL - Jour 2).doc