
Procédure pour déplacer une fenêtre dans les coins du bureau, en tenant compte de la position et des dimensions de la barre des taches
PROCEDURE Gen_BougeFenetre(xFenêtre,xPosition)
// Déplacement d'une fenêtre sur l'écran
// Déclarations
cLargeur, cHauteur sont des entiers
cPosition est une chaîne
// Récupère les informations sur la barre des taches
cRect est une structure
cg est un entier
ch est un entier
cd est un entier
cb est un entier
FIN
Rec est un cRect
AppelDLL32("user32", "GetWindowRect", AppelDLL32("User32",
"FindWindowA", "Shell_TrayWnd", Null), &Rec)
cHauteur=Abs(Rec:cb-Rec:ch)
cLargeur=Abs(Rec:cd-Rec:cg)
// Détermine l'emplacement de la barre des taches
SI (Rec:cd-Rec:cg)=SysXRes() ALORS
SI Rec:ch=0 ALORS cPosition="h" SINON cPosition="b"
SINON
SI Rec:cg=0 ALORS cPosition="g" SINON cPosition="d"
FIN
// Déplace la fenêtre
SELON xPosition
// En haut - Gauche, centre et droite
CAS "hg":
SI cPosition<>"g" ALORS {xFenêtre}..X=0 SINON {xFenêtre}..X=cLargeur
SI cPosition<>"h" ALORS {xFenêtre}..Y=0 SINON {xFenêtre}..Y=cHauteur
CAS "hc":
SELON cPosition
CAS "d": {xFenêtre}..X=(SysXRes()-cLargeur-{xFenêtre}..Largeur)/2;
{xFenêtre}..Y=0
CAS "g": {xFenêtre}..X=(SysXRes()+cLargeur-{xFenêtre}..Largeur)/2;
{xFenêtre}..Y=0
CAS "h": {xFenêtre}..X=(SysXRes()-{xFenêtre}..Largeur)/2;
{xFenêtre}..Y=cHauteur
CAS "b": {xFenêtre}..X=(SysXRes()-{xFenêtre}..Largeur)/2;
{xFenêtre}..Y=0
FIN
CAS "hd":
SI cPosition<>"d" ALORS {xFenêtre}..X=SysXRes()-{xFenêtre}..Largeur
SINON {xFenêtre}..X=SysXRes()-{xFenêtre}..Largeur-cLargeur
SI cPosition<>"h" ALORS {xFenêtre}..Y=0 SINON {xFenêtre}..Y=cHauteur
// Au centre - Gauche, centre et droite
CAS "cg":
SELON cPosition
CAS "d": {xFenêtre}..X=0; {xFenêtre}..Y=(SysYRes()-{xFenêtre}..Hauteur)/2
CAS "g": {xFenêtre}..X=cLargeur; {xFenêtre}..Y=(SysYRes()-{xFenêtre}..Hauteur)/2
CAS "h": {xFenêtre}..X=0; {xFenêtre}..Y=(SysYRes()+cHauteur-{xFenêtre}..Hauteur)/2
CAS "b": {xFenêtre}..X=0; {xFenêtre}..Y=(SysYRes()-cHauteur-{xFenêtre}..Hauteur)/2
FIN
CAS "c":
SELON cPosition
CAS "d": {xFenêtre}..X=(SysXRes()-cLargeur-{xFenêtre}..Largeur)/2;
{xFenêtre}..Y=(SysYRes()-{xFenêtre}..Hauteur)/2
CAS "g": {xFenêtre}..X=(SysXRes()+cLargeur-{xFenêtre}..Largeur)/2;
{xFenêtre}..Y=(SysYRes()-{xFenêtre}..Hauteur)/2
CAS "h": {xFenêtre}..X=(SysXRes()-{xFenêtre}..Largeur)/2;
{xFenêtre}..Y=(SysYRes()+cHauteur-{xFenêtre}..Hauteur)/2
CAS "b": {xFenêtre}..X=(SysXRes()-{xFenêtre}..Largeur)/2;
{xFenêtre}..Y=(SysYRes()-cHauteur-{xFenêtre}..Hauteur)/2
FIN
CAS "cd":
SELON cPosition
CAS "d": {xFenêtre}..X=SysXRes()-cLargeur-{xFenêtre}..Largeur;
{xFenêtre}..Y=(SysYRes()-{xFenêtre}..Hauteur)/2
CAS "g": {xFenêtre}..X=SysXRes()-{xFenêtre}..Largeur;
{xFenêtre}..Y=(SysYRes()-{xFenêtre}..Hauteur)/2
CAS "h": {xFenêtre}..X=SysXRes()-{xFenêtre}..Largeur;
{xFenêtre}..Y=(SysYRes()+cHauteur-{xFenêtre}..Hauteur)/2
CAS "b": {xFenêtre}..X=SysXRes()-{xFenêtre}..Largeur;
{xFenêtre}..Y=(SysYRes()-cHauteur-{xFenêtre}..Hauteur)/2
FIN
// En bas - Gauche, centre et droite
CAS "bg":
SI cPosition<>"g" ALORS {xFenêtre}..X=0 SINON {xFenêtre}..X=cLargeur
SI cPosition<>"b" ALORS {xFenêtre}..Y=SysYRes()-{xFenêtre}..Hauteur
SINON {xFenêtre}..Y=SysYRes()-{xFenêtre}..Hauteur-cHauteur
CAS "bc":
SELON cPosition
CAS "d": {xFenêtre}..X=(SysXRes()-cLargeur-{xFenêtre}..Largeur)/2;
{xFenêtre}..Y=SysYRes()-{xFenêtre}..Hauteur
CAS "g": {xFenêtre}..X=(SysXRes()+cLargeur-{xFenêtre}..Largeur)/2;
{xFenêtre}..Y=SysYRes()-{xFenêtre}..Hauteur
CAS "h": {xFenêtre}..X=(SysXRes()-{xFenêtre}..Largeur)/2;
{xFenêtre}..Y=SysYRes()-{xFenêtre}..Hauteur
CAS "b": {xFenêtre}..X=(SysXRes()-{xFenêtre}..Largeur)/2;
{xFenêtre}..Y=SysYRes()-cHauteur-{xFenêtre}..Hauteur
FIN
CAS "bd":
SI cPosition<>"d" ALORS {xFenêtre}..X=SysXRes()-{xFenêtre}..Largeur
SINON {xFenêtre}..X=SysXRes()-{xFenêtre}..Largeur-cLargeur
SI cPosition<>"b" ALORS {xFenêtre}..Y=SysYRes()-{xFenêtre}..Hauteur
SINON {xFenêtre}..Y=SysYRes()-{xFenêtre}..Hauteur-cHauteur
// Autres positions - Haut, bas et Gauche, droite
CAS "h":
SI cPosition<>"h" ALORS {xFenêtre}..Y=0 SINON {xFenêtre}..Y=cHauteur
CAS "b":
SI cPosition<>"b" ALORS {xFenêtre}..Y=SysYRes()-{xFenêtre}..Hauteur
SINON {xFenêtre}..Y=SysYRes()-{xFenêtre}..Hauteur-cHauteur
CAS "g":
SI cPosition<>"g" ALORS {xFenêtre}..X=0 SINON {xFenêtre}..X=cLargeur
CAS "d":
SI cPosition<>"d" ALORS {xFenêtre}..X=SysXRes()-{xFenêtre}..Largeur
SINON {xFenêtre}..X=SysXRes()-{xFenêtre}..Largeur-cLargeur
FIN