Salut Jérôme,
merci de ta réponse.
Alors j'ai donc creusé, oh, d'une manière toute simple, en me mettant dans le dossier .../lazarus/2.2.6 et là, une commande facile grep -r "EnumFontFamiliesEX" * dont le résultat est à tomber par terre :
lcl/interfaces/win32/win32lclintf.inc: EnumFontFamiliesEX(DC, @LF, @EnumFontsCallback, LPARAM(@Rec), 0);
et c'est tout (j'ai éliminé les entrées du dossier examples/fontenum qui ne servent à rien ici).
Donc avec mon Linux je suis sensé ne pas pouvoir utiliser cette fonction, c'est bien ça ? Mais pourtant le boulot est fait -- mal, pour Linux, et c'est pour ça que je voulais y aller voir...
Ou la compilation lui change le nom ?
Mais alors, comment trouver le code exécuté ?

Envoyé par
BeanzMaster
Le "debug" ici tu devrais le voir quand tu compiles la LCL avec le mode debug et en ligne de commande.
Je crains de ne pas savoir faire (et pas envie de chercher, fait vraiment trop chaud), cependant, j'ai eu une intuition, qui a payé :
Point d'arrêt sur la première ligne EnumFontFamiliesEx puis F7 envoie sur
1 2 3 4 5
| function EnumFontFamiliesEx(DC: HDC; lpLogFont: PLogFont;
Callback: FontEnumExProc; LParam: Lparam; flags: dword): longint;
begin
Result := WidgetSet.EnumFontFamiliesEx(DC, lpLogFont, Callback, LParam, flags);
end; |
et un autre F7 envoie dans gtk2winapi.inc,
1 2
| (ligne 3337) function TGtk2WidgetSet.EnumFontFamiliesEx(DC: HDC; lpLogFont: PLogFont;
Callback: FontEnumExProc; Lparam: LParam; Flags: dword): longint; |
qui contient 4 sous-fonctions : Gtk2GetFontFamilies, Gtk2GetFontFamiliesDefault, GetStyleAt et FillLogFontA, et se termine ligne 3590, soit 250 lignes
Plus qu'à étudier tout ça, et à comparer avec Windows 7 où la même fonction n'affiche que 22 lignes...
J'ai déjà repéré que c'est LoadFamilyFonts qui remplit la listbox lbFamily mais alors, à quoi sert LoadFontList et son
lbFamily.Items.Assign(L [qui est une stringlist remplie par EnumFontFamiliesEx]) ?
À suivre...
Et merci à toi.
Partager