Avatar billede henrietthe Nybegynder
22. september 2002 - 22:09 Der er 6 kommentarer og
1 løsning

Gi' mig et handle

Hej

Jeg roder lidt med et eksempel jeg fik her på siden. Det er det eksempel, hvor man "griber" et clipboard event, til dette skal man bl.a. bruge formens HANDLE. Alt dette virker fint.

Jeg vil nu lægge denne funktion i en klasse som jeg så tilgår. Men jeg kan ikke få klassen til at få et handle, selvom jeg nedarver fra TWincontrol.

Hvordan giver man en klasse et handle ?
Avatar billede loke-liscom Nybegynder
23. september 2002 - 10:53 #1
Er det ikke createhandle du skal bruge? Er det ikke et handle den skal bruge til at sende windowmessages til?
Avatar billede loke-liscom Nybegynder
23. september 2002 - 11:27 #2
du kan bruge følgende :
function AllocateHWnd(Method: TWndMethod): HWND;
kig i hjælpfilen det er et eks. Funktionen gør det at den laver et "skjult" windue, den eneste funktion den har er at modtage windowmessages du skal bare skrive WndProc proceduren. På denne måde kan du lade din klasse nedarve TObject.

//klaus
Avatar billede henrietthe Nybegynder
24. september 2002 - 20:20 #3
Jeg er sikker på at AllocatreHWnd kan bruges, men min hjælpefil er blevet meget dårlig efter jeg installerede D6 oveni D4.

Måske lidt mere hjælp, f.eks. hvilken dcu fil skal tilknyttes (Uses)
Avatar billede loke-liscom Nybegynder
25. september 2002 - 13:22 #4
Den hedder ikke AllocatreHWnd(måske bare en slåfejl) men AllocateHWnd.
øhhhh..... Jeg sidder ikke lige foran delphi men... AllocateHWnd er en funktion i TApplication hvis det hjælper. Ellers svarrer jeg lige på spørgsmålet lidt senere(Når jeg sidder foran Delphi)
Avatar billede loke-liscom Nybegynder
26. september 2002 - 00:00 #5
Her er dit handle.....

TTest = class
private
  FWHandle : HWND;
protected
  procedure WndProc(var Msg: TMessage);
public
  constructor Create; override;
  destructor Destroy; override;
end;

implementation

{ TTest }

constructor TTest.Create;
begin
  inherited Create;
  FWHandle := AllocateHWnd(WndProc);
end;

destructor TTest.Destroy;
begin
  DeallocateHWnd(FWindowHandle);
  inherited Destroy;
end;

procedure TTest.WndProc(var Msg: TMessage);
begin
//nop
end;

//Klaus
Avatar billede loke-liscom Nybegynder
26. september 2002 - 00:03 #6
ups, jeg burde nok have trykkey ctrl-F9 inden jeg sendte dette....

I linierne :
constructor Create; override;-----> kan ikke override's
DeallocateHWnd(FWindowHandle);----> Ikke FWindowHandle men FWHandle

Sorry...

//klaus
Avatar billede henrietthe Nybegynder
27. januar 2003 - 19:15 #7
Jeg har fået styr på det.
Tak for alle svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester