Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 20, 2025 00:30

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Pointer auf Klasse
BeitragVerfasst: Mo Mai 30, 2005 10:13 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Hi, habe bei der Umsetzung "meiner" Fensterklasse Probleme von Objekte auf Classen umzustellen.
Sobald Render aufgerufen wird stürzt das Programm ab, da der Pointer auf was falsches zeigt.
Wieso?

Code:
  1. ///////////die fehlerhafte Unit/////////////////////////////////////////////////////
  2.  
  3.   TAppWindow = Class
  4.     protected
  5.       Width, Height : Integer;
  6.       CaptionBarHeight : Integer;
  7.     private
  8.       Windows : Array of PWindow;
  9.       MouseDrag : TMouseDrag;
  10.  
  11.       ButtonPressed : PButton;
  12.       EditSelect: Integer;
  13.       EditFocused : PEdit;
  14.       ComboOpen: PCombobox; //which Combobox is open?
  15.       ComboOpened: Boolean; //has a Combobox get opened?
  16.                             //important if you have more than one Window with Comboboxes
  17.     public
  18.       Mouse : TMouse;
  19.  
  20.       constructor Create(xWidht, xHeight: Integer; Texture: TGLUint);
  21.       procedure Render;
  22.       function OnMouseDown(mX, mY, mButton: Integer): Boolean;
  23.       procedure OnMouseUp(mX, mY, mButton: Integer);
  24.       procedure OnMouseMove(mX, mY: Integer);
  25.       procedure OnKeyDown(Key: Word);
  26.   end;  
  27.  
  28.   TWidow = Class
  29.     X, Y    : Integer;
  30.     Width, Height : Integer;
  31.     Visible : Boolean;
  32.     .
  33.     .  //mehre Arrays für Objekte, die aber hier nicht benutzt werden
  34.     .
  35.     function onMouseDown(mX, mY, mButton: Integer): boolean;
  36.     procedure onMouseUp(mX, mY, mButton: Integer);
  37.   end;
  38.  
  39.  
  40.   TWindow = Class(TWidow)
  41.     ZOrder  : single;
  42.     Alpha   : Single;
  43.     MayClose    : Boolean;
  44.     MayAlpha    : Boolean;
  45.     MayDrag     : Boolean;
  46.     Captionbar  : Boolean;
  47.     onclose     : procedure;
  48.     constructor Create(wX, wY, wWidth, wHeight : Integer);
  49.     function onMouseDown(mX, mY, mButton: Integer): boolean;
  50.     procedure onMouseUp(mX, mY, mButton: Integer);
  51.     procedure Render;
  52.   end;
  53.  
  54. var AppWindow: TAppWindow;
  55.  
  56.  
  57. procedure TAppWindow.Render;
  58. var I: Integer;
  59. begin
  60.   glMatrixMode(GL_PROJECTION);  // Change Matrix Mode to Projection
  61.   glLoadIdentity();             // Reset View
  62.   glOrtho(0, Width, 0, Height, 0, 100);
  63.   glMatrixMode(GL_MODELVIEW);   // Change Projection to Matrix Mode
  64.   glLoadIdentity;
  65.  
  66.   glDisable(GL_LIGHTING);
  67.   glEnable(GL_TEXTURE_2D);
  68.  
  69.   glTranslatef(0, 0, -High(Windows)-2);
  70.  
  71.   for I:=0 to High(Windows) do
  72.     begin
  73.       Windows[I]^.Render;
  74.       glTranslatef(0,0,1);
  75.     end;
  76.   glTranslatef(0,0,2);  //1 weil, die Maus noch in eine \"Ebene\" gezeichnet wird,
  77.                         //das andere, damit das Picking richtig funktioniert;
  78. end;
  79.  
  80.  
  81. {------------------------------------------------------------------}
  82. {  Initialise window and setup defaults                            }
  83. {------------------------------------------------------------------}
  84. constructor TWindow.Create(wX, wY, wWidth, wHeight : Integer);
  85. begin
  86.   X :=wX;
  87.   Y :=wY;
  88.   Width  :=wWidth;
  89.   Height :=wHeight;
  90.   Visible :=TRUE;     // start off visible
  91.   zOrder :=0;         // used if you specifically want to set a window higher
  92.   Alpha :=0.9;        // default for alpha blending
  93.   MayClose:=False;
  94.   MayAlpha:=False;
  95.   MayDrag:=False;
  96.   Captionbar:=False;
  97.   with AppWindow do
  98.     begin
  99.     SetLength(Windows,High(Windows)+2);
  100.     Windows[High(Windows)]:=@self;
  101.     end;
  102. end;
  103.  
  104.  
  105. //////////////////////Das DGL-Template:///////////////////////////////////
  106. procedure TGLForm.FormCreate(Sender: TObject);
  107. begin
  108. .
  109. . //DGL-Template
  110. .
  111. LoadTexture('gui.tga',GuiTexture);
  112. AppWindow:=TAppwindow.Create(640,480,GuiTexture);
  113. Window1:=TWindow.Create(0,0,320,240);
  114. end;
  115.  
  116. procedure TGLForm.ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
  117. begin
  118. .
  119. .
  120. .
  121. Appwindow.Render; //Hier der Fehler
  122. .
  123. .
  124. .
  125. end;
  126.  


Danke


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]