Avatar billede zerohero Nybegynder
12. september 2001 - 23:59 Der er 9 kommentarer og
1 løsning

getdc(?.handle);

Følgende kode virker korrekt:

var dc: hdc;
    rc: hglrc;
begin
  dc := getdc(TabControl1.handle);//Actually, you can use any windowed control here
  setuppixelformat(dc);
  rc := wglcreatecontext(dc); //makes OpenGL window out of DC
  wglMakeCurrent(dc, rc);  //makes OpenGL window active
end;

Men hvis jeg erstatter TabControl1 med Panel1 så sker der ingenting. Jeg havde på fornemmelsen at det havde noget med Panel1\'s canvas at gøre men det har det ikke. For hvis jeg sætter en canvas på Panel1 således:

type
  Tcanvascontrol = class(Tcustomcontrol)
    property canvas;
  end;

...

var dc: hdc;
    rc: hglrc;
begin
  dc := getdc(Tcanvascontrol(Panel1).canvas.handle);//Actually, you can use any windowed control here
  setuppixelformat(dc);
  rc := wglcreatecontext(dc); //makes OpenGL window out of DC
  wglMakeCurrent(dc, rc);  //makes OpenGL window active
end;

...

opstår der en fejlmeddelse! Så hvad han jeg gøre for at få det til at virke???

ZeroHero
Avatar billede torbenmelander Nybegynder
13. september 2001 - 06:35 #1
Hva\' er fejlmeddelsen ??
Avatar billede delphi Nybegynder
13. september 2001 - 09:42 #2
Er din Canvas created?  dvs. er der en Canvas := TCanvas.Create(); i din TCanvasControl.Create??

Peter
Avatar billede martinlind Nybegynder
13. september 2001 - 09:51 #3
En Canvas.Handle er en HDC, det eks. du har er det en Control Handle du get\'er en HDC på, Prøv evt. at skrive Panel1.Handle, eller også droppe GetDC, da du har en HDC på den Canvas du vil bruge

/Martin
Avatar billede delphi Nybegynder
13. september 2001 - 10:15 #4
nå ja..... Canvas er ikke en component... dumme mig!
Avatar billede delphi Nybegynder
13. september 2001 - 10:16 #5
jo den er!

TCanvas = class(TPersistent)

nå...
Avatar billede martinlind Nybegynder
13. september 2001 - 10:18 #6
Men prøv at se hvilken type TCancas,Handle er DET ER EN HDC, så du kan ikke get en HDC fra en HDC, det er ihvertfald en af fejlene, om der er flere ved jeg ikke.
Avatar billede zerohero Nybegynder
13. september 2001 - 16:35 #7
Jeg kigger lige på sagen!!!
Avatar billede zerohero Nybegynder
13. september 2001 - 16:48 #8
He He... Ja det virker faktisk godtnok når jeg skriver følgende kode (UPS!!!):

...

var dc: hdc;
    rc: hglrc;
begin
  dc := getdc(panel1.handle);//Actually, you can use any windowed control here
  setuppixelformat(dc);
  rc := wglcreatecontext(dc); //makes OpenGL window out of DC
  wglMakeCurrent(dc, rc);  //makes OpenGL window active
end;

...

Men jeg har fundet ud af at jeg bliver nødt til at \"opdatere\" min panel manuelt. Hvorfor opdatere den ikke automatisk ligesom tabcontrol\'en???

ikke engang når jeg henviser til formpaint(sender); procedure i min form\'s oncreate sker der noget!!! (mærkligt)...

en side spørgsmål: kan jeg overføre onmousemove, onmouseup & onmousedown events til min panel - uden at jeg skal lave en ny komponent der arver Tpanel\'en???

ZeroHero
Avatar billede torbenmelander Nybegynder
27. september 2001 - 22:44 #9
Tror jeg ikke - Måske du kunne lukke spørgsmålet, da det ikke ser ud til at du får flere svar ??
Avatar billede zerohero Nybegynder
28. september 2001 - 00:20 #10
torbenmelander>> Jepper... det har du ret i :-))

Tak for alles indsats...
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