Procédure qui permet de créer un menu popup avec le contenu d'un fichier (en l'occurrence des genres de musique)

PROCEDURE Gen_MenuPopupGenre()
// Affiche le menu popup des genres et renvoi la sélection

// Extrait la position de la souris
cPos, cPosX, cPosY sont des entiers
cPos = CurseurPos(cpEcran)
cPosX = PoidsFaible(cPos)
cPosY = PoidsFort(cPos)

// Création du menu volant
cMenuHwd est un entier
cMenuHwd=AppelDLL32("user32","CreatePopupMenu")
SI cMenuHwd=0 ALORS
Erreur(ErreurInfo())
RENVOYER ""
FIN

// Ajout des genres
cOptionNum est un entier
cOptionLib est une chaîne ASCIIZ sur 50
cCpt est un entier
HLitPremier(BGenre,Genre)
TANTQUE PAS HEnDehors(BGenre)
cOptionLib=BGenre.Genre
cOptionNum=gcOption+BGenre.GenreNum
cCpt++
SI cCpt>25 ALORS
cCpt=1
AppelDLL32("user32","AppendMenuA",cMenuHwd,MF_STRING+MF_MENUBREAK,cOptionNum,&cOptionLib)
SINON
AppelDLL32("user32","AppendMenuA",cMenuHwd,MF_STRING,cOptionNum,&cOptionLib)
FIN
HLitSuivant(BGenre,Genre)
FIN

// Affichage du menu
cuFlags est un entier=TPM_TOPALIGN+TPM_LEFTALIGN+TPM_RETURNCMD
cNumOption est un entier=AppelDLL32("user32","TrackPopupMenu",cMenuHwd,cuFlags,cPosX,cPosY,0,Handle(f_main),0)
AppelDLL32("user32","DestroyMenu",cMenuHwd)

// Renvoi du genre
SI cNumOption<>0 ALORS
HLitRecherchePremier(BGenre,GenreNum,cNumOption-gcOption)
SI HTrouve(BGenre) ALORS
RENVOYER BGenre.Genre
FIN
FIN
RENVOYER ""