Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

1

05.01.2011, 15:33

SDL Window Spezielle Eigenschaften Einstellen (Position, (nachträgl.) Größe, Dekoration, ...)

Sehr geehrtes Forum,

ich möchte in SDL ein Fenster öffnen, und diesem dann Mehr, als nur die Paar Eigenschaften zuweisen, die man ihm durch die Methode SDL_SetVideoMode(); geben kann.

Ich weiß nun nicht was ich tun soll, ich möchte nämlich ein Fenster mit Deko (nur die Titelzeile und das Icon) haben, das die Hälfte der Größe des Bildschirmes entspricht und zentriert ist (soll das StartMenü für mein Spiel werden).

Kann mir einer helfen, und sagen, was sich da machen ließe?

Ich habe schon einmal folgenden Code hier:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
 int width = 0;
 int height = 0;
 RECT desktop;
 const HWND hDesktop = GetDesktopWindow();
 GetWindowRect(hDesktop, &desktop);
 width = desktop.right;
 height = desktop.bottom;
 string title;
 stringstream ss;
 ss << "Breite : " << width << " | Höhe : " << height;
 title = ss.str();
 sScreen = SDL_SetVideoMode(width/2,height/2,16, SDL_SWSURFACE );
 SDL_WM_SetCaption( title.c_str(), NULL );


Ich danke euch für eure Hilfe,
m.f.G. Developer_X

PS:
Was ist mit dem Forumeditor los, wenn ich was posten will, und eine neue Zeile anfangen will, werden gleich 2 neue Zeilen eingefügt.
Vielleicht ist die eine blöde Frage aber ich bin noch neu im Forum.
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

05.01.2011, 19:37

Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

3

05.01.2011, 19:46

Die beiden habe ich auch schon herausgefunden. Trotzdem danke.
Ich suche eher nach etwas, mit dem Ich dem Fenster einen Rahmen geben kann, indem es nur das Icon und den Titel gibt.

Das mit der Zentrierung habe ich nach etwas längerem Suchen in der API gefunden,

C-/C++-Quelltext

1
 SDL_putenv("SDL_VIDEO_CENTERED=center");


Kannst du mir vielleicht sagen wie ich den Rahmen des Fensters so gestalten kann?

Danke dir,
m.f.G. Developer_X
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

05.01.2011, 19:47

Wie genau stellst du dir "Nur Icon und Titel" vor? Also Beispiel.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

5

05.01.2011, 19:51

Ich habe dir mal ein Bild gemalt, ich gebe zu, es ist etwas schwer zu verstehen, ich habe das nämlich
mal in einem Spiel gesehen, und wollte das deswegen auch so programmieren



Verstehst du jetzt was ich meine?
»Developer_X« hat folgendes Bild angehängt:
  • Fenster ohne X.png
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

6

05.01.2011, 20:01

Wüsste nicht, wie du das angehen könntest.
Aber darauf solltest du dich auch erst zum Schluss konzentrieren, sind ja nur Design-technische Dinge ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

7

05.01.2011, 20:07

OK, es ist ja nicht so ein riesen Ding, wenn nicht lass ich es halt auch stehen.

Ich will nämlich ein "Frogger" programmieren, um mich erst einmal ein bisschen "einzutrainieren" in die SDL,
So lange ich das eine Fenster schließen und das anderen öffnen kann, ist es ja kein allzugroßes Problem^^.

Ich werde es hier dann auch mal veröffentlichen.

M.f.G. Developer_X

PS: Und danke nochmal
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

8

05.01.2011, 20:11

Was deinen Profil Text über umfangreicheren Möglichkeiten in Java bezüglich zeichnen angeht, die die SDL angeblich nicht beinhaltet: schau dir mal die SDL_Gfx an ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

9

05.01.2011, 20:51

Hallo Developer_X,

erstmal ein herzliches Willkommen im Forum.

Die SDL bietet - soweit ich das überblicken kann - keine Möglichkeiten ein Fenster mit entsprechenden, von dir gewünschten Flags zu erstellen. Allerdings gibt es - laut der SDL Dokumentation - zumindest seit Version 1.3 die Funktion SDL_CreateWindowFrom() (bei Version 1.2.4 kann ich die Funktion nicht finden). Hier gehts zur Funktion in der SDL Doku. Habe leider keine Zeit diese Version der SDL zu laden und zu kompilieren und kann es somit gerade nicht testen. Aber anscheinend kann man ja so ein SDL Fenster aus einem bestehenden Fenster erstellen. Das würde bedeuten du kannst dein Fenster - so wie du es gerne hättest - über die WinApi erstellen und mit dieser Funktion ein SDL Fenster draus machen.

Über die WinApi kannst du dann entweder ein Fenster erstellen, dass nur einen Titel hat (Window Style: WS_OVERLAPPED) oder aber ein Fenster das zusätzlich noch ein Icon und einen Button zum Schließen hat (Window Style: WS_OVERLAPPED | WS_SYSMENU), aber nur Icon (also ohne Schließen-Button) geht meines Wissens nicht. Allerdings kannst du den Schließen-Button ja deaktivieren / nicht drauf reagieren.

Gruß
SaRu_

Developer_X

Treue Seele

  • »Developer_X« ist der Autor dieses Themas

Beiträge: 247

Wohnort: Hessen

Beruf: Schüler

  • Private Nachricht senden

10

06.01.2011, 08:42

Danke für die Begrüßung hier im Forum, SaRu.

Ich denke mal, ich brauch mir deswegen erstmal nicht so viel
Arbeit zu machen, mit der SDL kann ich ja selbst abfangen,
welches Event für mich wichtig ist, und welches nicht,
da schreib ich überhaupt erst nicht in die Loop-Schleife, nach
der Erstellung des Fensters, dass ich das Fenster schließe,
wenn X gedrückt wurde.

Ich programmiere nämlich einen kleinen Frogger, und das soll
mein erstes Spiel in C++ sein, hier mal ein kleiner ScreenShot
des StartFensters :


Wie ihr seht, ich nutze Codeblocks.

Na ja denn, danke euch allen,
m.f.G. Developer_X
»Developer_X« hat folgendes Bild angehängt:
  • Aufzeichnen.PNG
- Die Zeit ist wie ein Fluss, und die Gegenwart wie ein Fels, der von dem Fluss der Zeit geschliffen wird. -
Kevin Riehl

Werbeanzeige