Je réalise une vaste DLL de support, en Delphi 6 Personal Edition, pour un langage Freeware externe (clone de Basic).

Dans le cadre de ce travail, je souhaite mettre à disposition une fonction permettane de gérer la couleur et les délais des HINT des différents objets de l'application. Pour cela, je tente d'utiliser les propriétés de l'objet TApplication, et j'ai bien conscience que cela est supposé s'appliquer sur les HINT de tous les objets de l'application.

J'ai créé une petite fonction qui fait ce travail, mais il y a un problème. Elle se termine bien, sans erreur, mais en réalité, elle n'a aucune action effective. Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function ConfigureHintProperties(app: integer; HHP,HP, R,G,B: integer):integer; stdcall; export;
var
  ClassName: array[0..255] of char;
  s: string;
  oldapp: integer;
begin
  result := -1;
  try
    if app=0 then exit;
    GetClassName(THandle(app), ClassName, 255);
    s := trim(ClassName);
    if s<>'TApplication' then exit;
    oldapp := integer(Application.Handle);
    Application.Handle := THandle(app);
    Application.HintHidePause := HHP*1000;
    Application.HintHidePause := HP*1000;
    Application.HintColor := RGB(R,G,B);
    Application.Handle := THandle(oldapp);
    result := 0;
  except
  end;
end;
exports ConfigureHintProperties;
J'essaie de changer les propriétés HintHidePause, HintHidePause et HintColor. En vérifiant dans la fonction, ces valeurs ont bien été changées. Mais dans le "monde réel", je ne constate aucun changement. Qu'est-ce que j'ai manqué ? Il y a forcément un problème d'incompréhension de ma part.

Juste pour compléter l'information: la valeur passée dans le premier paramètre est bien la valeur de Application.Handle du programme appelant. D'ailleurs, ma fonction teste bien cela en vérifiant le ClassName obtenu par ce handle.

(J'espère que j'ai posté ce message dans la bonne rubrique...).