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

Korowai

unregistriert

1

29.03.2015, 19:09

winapi Programmstruktur

Hallo,

ich habe einige Fragen zur Programmstrukturierung in der winapi.

Bei sämtlichen Tutorials hat man es nur mit einer ausführbaren Funktion zu tun.

Wie strukturiere ich ein Programm mit mehreren Funktionen?

Soweit ich sehe, gibt es mehrere Programmteile. Einmal die WInMain, einmal die WndProc.
In der WinMain werden die Codes untergebracht? DIe WndProc ist die Nachrichtenverarbeitung.

Was ist nun, wenn ich bspw. mehrere wechselnde MEnüeinträge habe. In diesem Fall, habe ich mir gedacht, steuere ich diese über eine Variable, die festlegt, welcher MEnüpunkt genau aufgerufen wurde, abhängig von den Tastenbedienungen in der WndProc, und ruft dann über die WM_PAINT die entsprechende Funktion auf, die dann die Menüs zeichnet und das vorhergehende löscht.
Ist das so ein Weg, den ich nachverfolgen sollte, oder liege ich damit falsch.

Dann die FRage, wie und wo ich void Funktionen mit und ohne RÜckgabewert unterbringe. Diese werden von der WInMain aus aufgerufen? Wie übernehme ich dann Wertübergaben aus der WNdProc? Tastenabfragen liefern ja soviele WErte zurück, wie in der Nachrichtenverarbeitung eingetragen sind. SOllte ich dann eine while(true) Schleife als Hauptprogramm in der WInMain setzen, die bei BEtätigen der Spielende- Taste beendet wird?

LEider ist die MSN und das Internet nicht sehr hilfreich. Ich habe die meisten WinAPi Tutorials durch, möchte jetzt noch etwas tiefer einsteigen, bevor ich mich entscheide, ob ich mit GLFW oder der WInApi wirklich an Umsetzungen gehe.

Für einen Kurzabriss der WInAPi Programmstrukturierung wäre ich sehr dankbar.

Ciao

2

29.03.2015, 20:05

Die WinAPI bietet dir vordefinierte Controls wie Menüs, Buttons oder anderes an, die brauchst du nicht selber machen ;) Aber wie es aussieht, solltest du dich weiter mit Programmierung allgemein vertraut machen.

Julién

Alter Hase

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

3

30.03.2015, 01:20

Genrell würde ich dir von WinAPI abraten. Als ich angefangen habe, wurde mir ständig geraten (NachoMan's Vermächtnis :P) eine Library zu verwenden.
Und das hat auch einen guten Grund. Du musst dich nicht mit unnötigen Mist herumquälen wie "WM_SIZE", "WM_NCCREATE", LOWORD(lParam) ect..

Du kannst dich dann eher auf das wichtige, nämlich deine Software konzentrieren.

Ich bin nunmal so dreist und empfehle dir folgende GUI Bibliotheken (die übrigens Crossplatform sind):
- FLTK
- Qt
- GTK+

Alle drei haben den Vorteil, dass sie Cross Platform sind und einiges vereinfachen.

Schönen Abend, ich gehe jetzt pennen.
MfG Julien
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Korowai

unregistriert

4

03.04.2015, 20:22

Hi,

@Julien: Ich schaue mir die Bibliotheken an, aber ich möchte zunächst mal die winapi näher kennen lernen.

@Roflo: Ich versuche, mich mit Programmierung vertraut zu machen, deshalb stelle ich hier Fragen. SOrry, das klingt jetzt pampig, aber ich bin mir durchaus im Klaren, dass ich in c++ noch viel zu lernen habe. Aber ich möchte trotzdem bereits über den Tellerrand schauen. Ich habe mir GLUT, GLFW angesehen, jetzt möchte ich etwas mit der winapi machen. Dabei nehme ich mir nach und nach die diversen c++ Pakete vor, die ich parallel in BÜchern lese.

Ich möchte meine FRage noch etwas präzisieren. WEnn ich Variablen initialisiere, Objekte bilde und die Programmkerne eines Spiels programmiert habe, wo setze ich diese im winapi Programmbaum ein? WIe sorge ich für einen korrekten Ablauf?

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

5

03.04.2015, 21:33

wxWidgets ist auch noch eine gute Wahl.
Der Vorteil gegenüber den meisten der genannten ist, dass wxWidgets die nativen Controls des Betriebssystems nutzt und sich somit vom Aussehen besser anpasst.

Zitat

WEnn ich Variablen initialisiere, Objekte bilde und die Programmkerne eines Spiels programmiert habe, wo setze ich diese im winapi Programmbaum ein? WIe sorge ich für einen korrekten Ablauf?

In einer Single Threaded Umgebung zwischen dem Aufrufen zu "PeekMessage", dass die Windows Nachrichten verarbeitet. Im Prinzip musst du nur ab und zu die Windows Nachrichten verarbeiten und kannst sonst ausgehend von der "WinMain" machen was du machen möchtest.

Du kannst aber auch das Spiel in einem eigenen Thread packen, der parallel zum Windows-Kram läuft.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (03.04.2015, 21:39)


Stazer

Alter Hase

Beiträge: 468

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

6

03.04.2015, 21:49

Ich habe FLTK schon für einige Projekte benutzt und kann es jedem empfehlen, obwohl es für meinen Geschmack ziemlich hässlich ist.

Freundliche Grüße
Stazer

Julién

Alter Hase

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

7

09.04.2015, 17:54

Ansonsten kannst du dich auch mit .Net befassen.

Auch wenn ich es noch nie gemacht habe, ist es glaube ich möglich,
dass man "Windows.Forms" und "WPF" per C++ (nicht nativ, aber ev. per COM-Pointer) nutzen kann.

MfG,
Julien
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

8

09.04.2015, 18:01

Kann man nicht.
Man kann es höchstens in C++ CLI verwenden. COM hat damit nix zu tun.
Empfehlen kann man das aber nicht.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

09.04.2015, 19:12

Man muss ja auch nicht auf Teufel vom raus mit C++ arbeiten. Willst du mit WPF arbeiten würde ich dir C# ans Herz legen. Aber wenn es dir hier darum geht dir die WinAPI mal anzugucken und damit eigene Erfahrungen zu machen, warum nicht. Und wenn der einzige Effekt dabei ist dass du dich hinterher beschwerst weil es dir keinen Spaß gemacht hat, dann war es dennoch eine Erfahrung die du gemacht hast.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige