Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 08-06-2006 22:03:55

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

L'INTERFACE AVEC WINDOWS

LES FONCTIONS EXTERNES

Les fonction externes sont des fonctions écrites dans un autre langage que PowerScript.
Ces fonctions sont enregistrées dans des DLL.
Avant d’utiliser une fonction externe, on doit la déclarer.
On peut utiliser deux types de fonctions externes.

Fonction Globales externes
    Elles sont valides dans toute l’application.

Fonction Locales Externes
    Elles sont définies pour un type particulier de fenêtre, de menu, de User Object ou de fonction utilisateur. Ces fonctions font parties de l’objet et sont toujours valides pour l’objet. On a aussi la possibilité de rendre ces fonctions valides pour d’autres scripts.


Déclaration des fonctions externes.

Pour déclarer une fonction externe :
Déclarer
soit :
    Une fonction globale externe.
soit :
    Une Fonction locale externe.

Ouvrir une fenêtre, un menu, un Usert Object ou une fonction utilisateur et sélectionner:

Declare>local external Functions à partir de la barre des menus.
Définir la fonction externe.
Cliquer OK.
Par la suite, PowerBuilder compile la déclaration.
S’il y a une erreur de syntaxe, un message d’erreur est affiché, On doit corriger l’erreur avant d’enregistrer la déclaration.

Les instructions suivantes déclarent deux fonctions externes du module KERNEL.DLL.

Code: pb

FUNCTION long GetModuleHandle(string modulename) &
LIBRARY 'KERNEL.DLL'
FUNCTION boolean GetModuleUsage(long hWnd) &
LIBRARY 'KERNEL.DLL'

Les instructions suivantes déclarent une fonction externe nommée IsZoomed enregistrée dans USER.EXE.

La fonction a un  argument(le handle de la fenêtre) et retourne un boolean: TRUE si la fenêtre est agrandie au maximum; sinon elle renvoie FALSE:

Code: pb

FUNCTION boolean IsZoomed(int handle) LIBRARY 'USER.EXE'

Passage d’arguments.

Les fonctions externes prennent des arguments par valeur ou par référence.

En passant un argument par référence, la fonction externe reçoit un pointeur sur l’argument et peut changer le contenu de l’argument et renvoyer la nouvelle valeur à PowerBuider.

En passant un argument par valeur, la fonction externe reçoit une copie de l’argument et peut changer le contenu de cette copie. La valeur originale n’est jamais modifiée.

Syntaxe pour un argument par référence:
REF datatype arg

PowerBuilder supporte uniquement les arguments de type FAR. Par conséquent, la définition de la fonction doit avoir le qualificateur FAR.

Syntaxe pour un argument par valeur :
datatype arg.


Passage d’arguments numériques

Les instructions suivantes déclarent une fonction externe TEMP dans PowerBuilder.
Cette fonction a un argument par référence et retourne un entier.

Code: pb

FUNCTION int TEMP(ref int degree) LIBRARY 'LIBNAME.DLL'

Cette fonction retourne un entier et prend un argument par valeur.

Code: pb

FUNCTION int TEMP2(int degree) LIBRARY 'LIBNAME.DLL'

Tant que l’argument est passé par valeur, la fonction peut changer le contenu de la valeur.

Tous les changements se font au niveau de la copie; la variable dans PowerBuider n’est jamais affectée.


Passage de chaînes de caractères

Passage par valeur.
Les instructions suivent la fonction externe NAME dans PowerBuilder.
Cette fonction prend un argument par valeur.

Code: pb

FUNCTION string NAME(string CODE) LIBRARY 'LIBNAME.DLL'

Tant que l’argument est passé par valeur, la fonction peut changer le contenu de la valeur.

Les changements se font au niveau de la copie; la variable dans PowerBuider n’est jamais affectée.

PowerBuilder a accès seulement à sa mémoire.

Une fonction externe ne peut pas renvoyer un pointeur sur une chaine à PowerBuilder(ainsi une fonction externe ne peut pas renvoyer une adresse mémoire).

Lorsque l’on passe une chaîne à une fonction externe par valeur ou par référence, PowerBuider passe un pointeur sur la chaîne.

Si l’on passe l’argument par valeur, tout changement dans la fonction ne pourra être accessible dans PowerBuilder.
Si l’on passe l’argument par référence, les modifications ont lieu dans PowerBuilder.

Les instructions suivantes déclarent la fonction externe NAME2 dans PowerBuilder.

Cette fonction retourne une chaîne de caractères et prend un argument de type chaîne de caractères.

Code: pb

FUNCTION int NAME2(int degree) LIBRARY 'LIBNAME.DLL'

La chaîne de caractères est passée par référence,  la fonction externe peut changer le contenu de l’argument et la valeur originale dans PowerBuider.


Passage d’arguments de type char

Les arguments de type char sont convertis en  variable de type Char.


Envoi de messages windows

Pour envoyer un message à une fenêtre créée dans PowerBuilder ou à une fenêtre externe(par exemple, une fenêtre créée en utilisant une fonction externe),  on utilise les fonctions send ou post.

Pour déclencher un évenement PowerBuilder on utilise TriggerEvent ou PostEvent..


Utilisation des fonctions Post et Send

En général, les fonctions Post et Send sont utilisées pour déclencher des événement Windows qui ne sont pas des événements PowerBuider.

On peut inclure ces fonctions  dans un script pour fenêtre ou dans un script quelconque de l’application.

La fonction Post est asynchrone :
Le message est ajouté à la queue des messages de la fenêtre ou du contrôle.

La fonction Send est synchrone :
La fenêtre ou le contrôle reçoit le message immédiatement.


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22