Salut à tous.
Je tente d'écrire une unité qui contiendrait les quelques fonctions élémentaires pour réduire une application dans le systray ...
Jusqu'à maintenant j'arrive à réduire et agrandir mon application, mais par contre impossible d'arriver à capturer un double-clic sur l'icône de l'application réduite.
D'après les nombreuses sources que j'ai trouvé ici et là, il faut utiliser les messages pour faire ce genre de choses.
Le hic, c'est que tous les exemples que j'ai pu tester fonctionnent bien, mais quand je fais un bête copier/coller de la procedure qui est censé gerer les messages, le compilateur ne veux plus en entendre parler (m'enerve celui là


)
Voici texto ce que j'ai ecris (toute l'unité en question)
---------------------------------------------------
unit Reduction_SysTray;
interface
uses ShellAPI, Forms, Messages, Windows;
Const
WM_MONICONE = WM_USER +1;
procedure AjouterIcone(FenetreConcernee:TForm);
procedure SupprimerIcone(FenetreConcernee:TForm);
procedure ReduireFenetre(FenetreConcernee:TForm);
procedure RestaurerFenetre(FenetreConcernee:TForm);
procedure WMTrayIconMessage(var Msg: TMessage); message WM_MONICONE;
var
FenetreApplication:TForm;
implementation
uses Fenetre_Principale;
procedure AjouterIcone(FenetreConcernee:TForm);
var
Info:TNotifyIconData;
begin
Info.cbSize := SizeOf(Info);
Info.Wnd := FenetreConcernee.Handle;
Info.uID := 1;
Info.szTip := 'test';
Info.hIcon := Application.Icon.Handle;
Info.uCallbackMessage := WM_MONICONE;
Info.uFlags := NIF_TIP Or NIF_ICON Or NIF_MESSAGE;
Shell_NotifyIcon(NIM_ADD,@Info);
end;
procedure SupprimerIcone(FenetreConcernee:TForm);
var
Info:TNotifyIconData;
begin
Info.cbSize := SizeOf(Info);
Info.Wnd := FenetreConcernee.Handle;
Info.uID := 1;
Shell_NotifyIcon(NIM_DELETE,@Info);
end;
procedure ReduireFenetre(FenetreConcernee:TForm);
begin
FenetreApplication:=FenetreConcernee;
AjouterIcone(FenetreConcernee);
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure RestaurerFenetre(FenetreConcernee:TForm);
begin
ShowWindow(Application.Handle, SW_SHOW);
Application.Restore;
SupprimerIcone(FenetreConcernee);
end;
procedure WMTrayIconMessage(var Msg: TMessage);
begin
if Msg.LParam=WM_LBUTTONDBLCLK then
RestaurerFenetre(FenetreApplication);
end;
end.
----------------------------------------------------------------
A la compilation, ça coince à la ligne 14 :
> procedure WMTrayIconMessage(var Msg: TMessage); message WM_MONICONE
> [Erreur] Reduction_SysTray.pas(14): Directive inconnue : 'message'
Je vais devenir chèvre avec ces messages ... help
