AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Eine Art TWinControl selbst erstellen, nur halt ohne Vorfahr
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Art TWinControl selbst erstellen, nur halt ohne Vorfahr

Ein Thema von EnORItZ · begonnen am 20. Sep 2003 · letzter Beitrag vom 26. Sep 2003
Antwort Antwort
EnORItZ

Registriert seit: 8. Sep 2003
11 Beiträge
 
#1

Eine Art TWinControl selbst erstellen, nur halt ohne Vorfahr

  Alt 20. Sep 2003, 20:14
Hallo,

Wenn ich mir eine Art abgespeckte TWinControl-Version (die von TObject abgeleitet wird) erstellen will, wie sollte ich da am besten vorgehen?
(Ich weiß es bringt mir nicht viel aber egal)

Ich hab mir Spasseshalber schonmal ne Klasse gemacht, die mir über die WinAPI-Funktionen ein Fenster erstellt. Da ich aber die WndProc nicht mit in die Klasse nehmen konnte glaub ich konnte ich deswegen keine Botschaftshandlungen einbauen(Die wurden einfach nicht beachtet)

Ich hab wahrscheinlich auch zu wenig Ahnung davon, würd mich aber mal interessieren wie die TWinControl funktioniert.

//edit: es geht mir jetzt hauptsächlich um die Botschaftsbehandlungen
MfG EnORItZ
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Eine Art TWinControl selbst erstellen, nur halt ohne Vor

  Alt 22. Sep 2003, 08:29
suche mal im source nach MakeObjectInstance
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
EnORItZ

Registriert seit: 8. Sep 2003
11 Beiträge
 
#3

Re: Eine Art TWinControl selbst erstellen, nur halt ohne Vor

  Alt 22. Sep 2003, 21:27
Also ich hab mir das schonmal angesehen(auch bevor ich den Thread hier eröffnet hab) nur bin ich daraus nicht schlau geworden. Das was mir aufgefallen ist, war dieses MakeObjectinstance doch hab ich nicht gerafft was man damit dann macht. Vieleicht kannst du mir das ja mal etwas genauer erklären....
MfG EnORItZ
  Mit Zitat antworten Zitat
EnORItZ

Registriert seit: 8. Sep 2003
11 Beiträge
 
#4

Re: Eine Art TWinControl selbst erstellen, nur halt ohne Vor

  Alt 23. Sep 2003, 15:45
Hallo,

ich hab mal jetzt einfach mal ne Klasse gemacht:

Delphi-Quellcode:
unit Control;
interface
uses classes, windows, messages;

type
 TControl = class
  private
   fHandle : THandle;
   fInstance : Pointer;
   procedure StoreHandle;
   procedure MyWndProc(var Message: TMessage);

  public
   mystr: string;
   constructor Create;
   destructor Destroy;
  published
   property Handle: THandle read fHandle write fHandle;
 end;

implementation
{
        TControl
}

constructor TControl.Create;
begin
 fInstance:=MakeObjectInstance(MyWndProc);
 StoreHandle;
 SetWindowLong(fHandle,GWL_WNDPROC,LongInt(fInstance));
end;
destructor TControl.Destroy;
begin
 FreeObjectInstance(fInstance);
end;
procedure TControl.StoreHandle;
begin
 fHandle:=THandle(Self);
end;
procedure TControl.MyWndProc(var Message: TMessage);
begin
 with Message do
  begin
   case Msg of
    WM_DESTROY:
      begin
       mystr:='WM_DESTROY';
      end;
    else DefWindowProc(fHandle,Msg,wParam,lParam);
   end;
  end;
end;
end.
Also das Feld "mystr" ist für die Nachrichten gedacht. Da kann ich ja überprüfen ob ne Nachricht benutzt wurde.(Wird ja darin gespeichert was als letztes da war)
Ich hab mir jetzt ein programm gemacht, diese Unit hier eingebunden und dann eine Variable vom Typ TControl(meinem da oben) definiert und dann das Objekt initialisiert.
Im Constructor wird mit MakeObjectInstance(MyWndProc) ja der Pointer zu meiner WndProc an das Feld fInstance übergeben.

Ist es richtig, das ich jetzt dann mit SetWindowLong den Pointer an mein Handle übergeben muss??

Jedenfalls funktioniert es so wie da oben nicht. Ich glaube das liegt daran das der meine Botschaftsbehandlungsroutine nicht kennt oder??

//edit: was bringt eigetntlich die InitInstance-Methode vom TObject?Hat das was damit zu tun??
MfG EnORItZ
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#5

Re: Eine Art TWinControl selbst erstellen, nur halt ohne Vor

  Alt 26. Sep 2003, 11:32
Es sollte eigentlich gehen!

Ich sichere nur noch die alte WndProc, indem ich sie über GetWindowLong hole und in der WndProc per CallWindowProc rufe.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz