AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timage ein Handle verpassen?

Ein Thema von richard_boderich · begonnen am 2. Jul 2005 · letzter Beitrag vom 4. Jul 2005
 
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Timage ein Handle verpassen?

  Alt 4. Jul 2005, 19:13
Hallo,
ich musste zwar noch nie einem TGraphicControl ein Fensterhandle verpassen. Ich habe mich aber erinnert es in den VCL-Sourcen bei TTimer schon einmal gesehen zu haben. Dort wird dem Timer ein Fensterhandle untergeschoben.
Das habe ich jetzt auf TImage angewendet und einen Nachfahren gebastelt.
Delphi-Quellcode:
unit HandleImage;

interface

uses
  Windows, Messages, SysUtils, Classes, Forms, Controls, ExtCtrls;


const

  PM_LOADIMAGE = WM_USER+1024;
    
type

  THandleImage = class(TImage)
  private
    { Private-Deklarationen }
    FWindowHandle : HWND;
    FOnLoadImage : TNotifyEvent;
    procedure WndProc(var Msg: TMessage);
  protected
    { Protected-Deklarationen }
    procedure LoadImage; virtual;
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property Handle : HWnd read FWindowHandle;
  published
    { Published-Deklarationen }
    property OnLoadImage : TNotifyEvent read FOnLoadImage write FOnLoadImage;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('MyComps', [THandleImage]);
end;

{ THandleImage }

constructor THandleImage.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FWindowHandle := Classes.AllocateHWnd(WndProc);
end;

destructor THandleImage.Destroy;
begin
  Classes.DeallocateHWnd(FWindowHandle);
  inherited Destroy;
end;

procedure THandleImage.LoadImage;
begin
  If Assigned(FOnLoadImage) then
    FOnLoadImage(Self);
end;

procedure THandleImage.WndProc(var Msg: TMessage);
begin
  with Msg do
    if Msg = PM_LOADIMAGE then
      try
        LoadImage;
      except
        Application.HandleException(Self);
      end
    else
      Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam);
end;

end.
Und siehe da - man kann der Komponente mit SendMessage ein Botschaft senden.
Siehe Anlage. Evt kann man das ja auch für ein Hintwindow verwenden.
Angehängte Dateien
Dateityp: zip zip_161.zip (221,7 KB, 11x aufgerufen)
I come from outer space to save the human race
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz