Slt!
Est-il possible de creer un composant non visuel dans une DLL ?
Slt!
Est-il possible de creer un composant non visuel dans une DLL ?
voir AllocateHWnd dans l'aide de delphi il donne un example (ttimer)
Référence VCL
AllocateHWnd, DeallocateHWnd, exemple
Le code suivant vient de l'implémentation de TTimer. Il montre comment le constructeur de composant timer crée une fenêtre cachée pour répondre aux messages Timer et comment le destructeur libère cette fenêtre.
{TTimer implémente une méthode WndProc qui devient la procédure de fenêtre pour la fenêtre cachée. }
procedure TTimer.WndProc(var Msg: TMessage);
begin
with Msg do
if Msg = WM_TIMER then { contrôle de messages du timer }
try
Timer; { appel du gestionnaire d'événement OnTimer }
except
Application.HandleException(Self);
end
else
{ Tous les autres messages sont passé à DefWindowProc, qui indique à Windows de gérer le message. Remarquez que le premier paramètre, FWindowHandle, est le handle de la fenêtre recevant ce message. Il est obtenu depuis l'appel de AllocateHWnd dans le constructeur. }
Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam);
end;
{ le constructeur TTimer utilise AllocateHWnd pour créer la fenêtre et enregistrer son handle. }
constructor TTimer.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FEnabled := True;
FInterval := 1000;
FWindowHandle := AllocateHWnd(WndProc);
end;
{ le destructeur de TTimer appelle DeallocateHWnd pour libérer la fenêtre cachée. }
destructor TTimer.Destroy;
begin
FEnabled := False;
UpdateTimer;
DeallocateHWnd(FWindowHandle);
inherited Destroy;
end;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager