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

Aktuelle Zeit: So Jul 13, 2025 10:36

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: So Jul 13, 2003 14:28 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
Wenn ich ein Fenster mit ws_caption oder ws_overlappedwindow erstelle so, dass das Fenster einen Rahmen hat, ist das Fenster insgesamt so groß wie die angegebene "Auflösung". d.h. der Bereich in dem gezeichnet wird ist kleiner als z.b. 640x480.
Kann man das nicht so machen, dass der Bereich in den gezeichnet werden kann die gewünschte Auflösung hat und "drumherum" halt noch der Rahmen kommt?

Ansonsten würde mir nur noch ws_popup bleiben, ganz ohne Rahmen.

Achso, das Messen der Rahmenbreite wäre auch keine Lösung, da diese in verschiedenen Windoof Versionen absolut unterschiedlich ist und man bei XP auch Themes verwenden kann die ganz andere Rahmenbreiten haben.

_________________
www.las.eu.tc


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 13, 2003 14:34 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Bei den VCL Fenstern TForm kann man clientwidth und clientwith direkt setzen.
Wenn du direkt mit den Fenstern arbeitest, kann du doch mit getclientrect die Größe den Innenbereiches herausfinden und mit getwindowrect die Gesammtgröße. Aus der Differenz kannst du doch dann die Rahmenbreite errechnen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 13, 2003 14:55 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
Joa, das geht schon ich die richtige Richtung...
Hmm kann man auch direkt die Größe vom Clientrect verändern? Möglichst elegant *g*
Und wie bekomm ich mein "OpenGL-Bereich" (2D-ortho) so hin, dass (0|0) auch (0|0) des Client Rects entspricht?


mfg las

_________________
www.las.eu.tc


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 13, 2003 14:56 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Neben der Methode von LarsMiddendorf gibt es die Funktion GetSystemMetrics(Index : Integer). Mit dieser kann man die verschiedenen Einstellungen beim Betriebssystem erfragen.


Gruß
KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 13, 2003 14:59 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
hmmmm wie wäre es denn damit ?
"The AdjustWindowRect function calculates the required size of the window rectangle, based on the desired client-rectangle size. The window rectangle can then be passed to the CreateWindow function to create a window whose client area is the desired size."

Edit, neeee scheint nicht zu funzen.

_________________
www.las.eu.tc


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 14, 2003 13:26 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
Hat das denn noch nie einer hier gemacht?

_________________
www.las.eu.tc


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 14, 2003 13:49 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich weiß zwar jetzt nicht genau was du vor hast. Aber das ClientRect passt du am besten an in dem du das Fenster in seiner Größe änderst. Das ClientRect berechnet sich nur aus dem Fenster - NonClient (Rahmen, Caption). Und im Falle von OpenGL musst du natürlich beim Wechseln (siehe Faq) die Auflösung angeben. Also die Reelle Auflösung deines glViewport der in deinem Fall auch die ClientRect repräsentiert.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 14, 2003 14:36 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jun 09, 2003 08:09
Beiträge: 98
gelöst...

Code:
  1.  
  2. procedure glresizeborder(width,height:integer);// (width,height) 0=> "Auflösung"
  3. var clientrect,windowrect:trect;
  4. bwidth,bheight:integer;
  5. begin
  6.  getclientrect(wnd,clientrect);
  7.  getwindowrect(wnd,windowrect);
  8.  bwidth:=(windowrect.right-windowrect.left)-(clientrect.right-clientrect.left);
  9.  bheight:=(windowrect.bottom-windowrect.top)-(clientrect.bottom-clientrect.top);
  10.  setwindowpos(wnd,0,getsystemmetrics(sm_cxscreen)shr 1-(width+bwidth)shr 1,getsystemmetrics(sm_cyscreen)shr 1-(height+bheight)shr 1,width+bwidth,height+bheight,swp_nozorder);
  11. end;
  12.  


thx @ all

_________________
www.las.eu.tc


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.007s | 14 Queries | GZIP : On ]