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!

Suchergebnisse

Suchergebnisse 1-20 von insgesamt 81.

Werbeanzeige

07.10.2010, 12:10

Forenbeitrag von: »ph4nt0m«

Microsoft C++-Ausnahme beim Werfen einer Exception

Was heißt hier "herumspekulieren"? Dass GetMessage() bei WM_QUIT 0 zurückgibt und somit aus der Hauptschleife springt, ist ja wohl bekannt. Mir ging es darum, herauszufinden, ob PostQuitMessage() darüber hinaus noch etwas wichtiges erledigt, was durch ein einfaches Flag dann nicht abgedeckt wäre. In diesem Fall wäre der Workaround natürlich nicht "zulässig", doch darüber macht dein MSDN-Eintrag eben leider keine deutlichen Aussagen.

07.10.2010, 11:55

Forenbeitrag von: »ph4nt0m«

Microsoft C++-Ausnahme beim Werfen einer Exception

Falls es noch jemanden interessiert: Es liegt nicht direkt an DestroyWindow(), sondern am dadurch ausgelösten Aufruf von PostQuitMessage(). Dieser sorgt aber offenbar sonst nur dafür, dass GetMessage() bzw. PeekMessage() aus der Hauptschleife herausspringen. Wenn man das also durch ein entsprechendes Flag ersetzt, kann man PostQuitMessage() umgehen und das Programm dennoch ordnungsgemäß beenden.

04.10.2010, 00:29

Forenbeitrag von: »ph4nt0m«

Microsoft C++-Ausnahme beim Werfen einer Exception

Die Klasse Window macht nichts weiter, als die Fensterklasse mit RegisterClassEx() zu registrieren, das Fenster mit CreateWindowEx() zu erstellen und in der klassischen Schleife Nachrichten abzuholen und darauf zu reagieren. Im Destruktor werden dann DestroyWindow() und UnregisterClass() aufgerufen. Ich habe inzwischen herausgefunden, dass die Meldung von Visual Studio nur auf eine ausgelöste Exception hinweist, die im Programm behandelt wird (also mehr eine Information als ein Fehler). Dennoch ...

03.10.2010, 22:48

Forenbeitrag von: »ph4nt0m«

Microsoft C++-Ausnahme beim Werfen einer Exception

Hallo, seit kurzem habe ich mich mal wieder mit DirectX beschäftigt und damit angefangen, die Hauptbestandteile einer entsprechenden Win32-Anwendung in Klassen zu kapseln. Bisher habe ich nur ein Fenster geöffnet und Direct3D initialisiert. Es läuft auch soweit problemlos, wenn ich allerdings zum Testen meiner Fehlerbehandlung absichtlich eine Exception aus einer Methode meiner Direct3D-Klasse werfe, wird nicht wie erwartet eine MessageBox mit der Fehlerbeschreibung geöffnet, sondern Visual Stud...

29.07.2009, 17:44

Forenbeitrag von: »ph4nt0m«

textur locken

Zitat von »"MSDN"« By convention, the right and bottom edges of the rectangle are normally considered exclusive. In other words, the pixel whose coordinates are ( right, bottom ) lies immediately outside of the the rectangle. Folglich ist dein zweiter Ansatz der richtige.

28.07.2009, 18:01

Forenbeitrag von: »ph4nt0m«

Threadsicherheit und SendMessage()

Hmm, wenn nur ein Thread im Hintergrund blockiert wird, würde ich davon natürlich wenig merken. Allerdings habe ich nach der CriticalSection, innerhalb welcher editCtrlAppend() aufgerufen wird, mal einen einfachen Beep-Befehl eingefügt und ich höre auf jeden Fall zweimal den Piepton. Müsste nicht nach deiner "Theorie" einer der beiden Threads in bzw. vor der Section hängen bleiben und somit gar nicht zur Ausführung der Beep-Funktion kommen? :?

28.07.2009, 16:40

Forenbeitrag von: »ph4nt0m«

Threadsicherheit und SendMessage()

Naja, müsste nicht bei einem Deadlock das gesamte Programm irgendwie stehen bleiben, wenn die Threads jeweils auf den anderen warten? Das Programm funktioniert nämlich soweit ohne Probleme, es fehlt eben nur der zweite Quellcode in der Textbox.

28.07.2009, 14:27

Forenbeitrag von: »ph4nt0m«

Threadsicherheit und SendMessage()

Wie bereits erwähnt habe ich den Aufruf meiner Funktion mit EnterCriticalSection/LeaveCriticalSection umschlossen, was allerdings nichts geändert hat.

28.07.2009, 11:17

Forenbeitrag von: »ph4nt0m«

Threadsicherheit und SendMessage()

Genau, so ähnlich ich es bei WinHTTP auch. Dem Aufruf von WinHttpOpen() übergebe ich das Flag WINHTTP_FLAG_ASYNC und vor dem Senden der eigentlichen Anfrage lege ich mit WinHttpSetStatusCallback() eine Callback-Funktion fest, die dann immer aufgerufen wird, sobald irgendein Ereignis eintritt (z.B. dass Daten zum Lesen bereit sind). Und sobald ich sicher bin, dass alles übertragen wurde, füge ich diese empfangenen Daten (Quelltext der Seite) in eine Textbox ein (dazu dient die obige Funktion im e...

27.07.2009, 23:23

Forenbeitrag von: »ph4nt0m«

Threadsicherheit und SendMessage()

Hallo, ich beschäftige mich zurzeit mit WinHTTP (ob das etwas taugt muss ich noch herausfinden) im asynchronen Modus, das heißt, es werden mehrere HTTP-Requests "gleichzeitig" gestellt. Intern läuft das Ganze wohl über Threads ab, damit die Anwendung nicht blockiert, während auf Daten gewartet wird. Nun möchte ich die empfangenen HTML-Quelltexte der einzelnen Anfragen in eine Textbox hintereinander einfügen. Die Hilftsfunktion sieht dazu wie folgt aus: C-/C++-Quelltext 1 2 3 4 5 6 7 8 void editC...

07.06.2009, 23:39

Forenbeitrag von: »ph4nt0m«

TTF zu Bitmapfont.

Also eines der bekanntesten Tools für diese Aufgabe ist wohl der Bitmap Font Generator von AngelCode. Dort findest du auch mehrere Beispiele und Codes, wie man die Bitmap anschließend wieder in sein Programm einlesen und einzelne Buchstaben ausgeben kann.

15.05.2009, 21:56

Forenbeitrag von: »ph4nt0m«

[Erledigt]Pixels untersuchen für Bitmapfont

Nein, Genion hat schon recht: Du musst Spalte für Spalte alle Pixel von oben nach unten (also vertikal) durchgehen. Es reicht nicht, nur in der ersten Zeile alle Pixel horizontal durchzugehen, da das eigentliche Zeichen unter Umständen seinen äußerst linken Pixel in einer anderen Zeile hat.

10.05.2009, 20:38

Forenbeitrag von: »ph4nt0m«

Warum 4x4-Matrix statt einer 3x3-Matrix?

Na dann zeig mir mal eine Translation von Vektoren, die aus drei Komponenten bestehen, mit einer 3x3 Matrix.

10.05.2009, 20:23

Forenbeitrag von: »ph4nt0m«

Warum 4x4-Matrix statt einer 3x3-Matrix?

Ein Grund (und möglicherweise der wichtigste) ist, dass man mit einer 4x4 Matrix auch Translationen, also einfache Verschiebungen beschreiben kann. Das geht mit einer 3x3 Matrix (bei dreidimensionalen Koordianten) nicht. Und da man in der 3D-Programmierung ziemlich großen Gebrauch des Assoziativgesetzes macht, ist es eben wichtig, Translationen (neben Rotationen, Projektionen usw.) auch mit Matrizen darstellen zu können. Der Unterschied liegt hier nämlich darin, dass Verschiebungen eine Addition...

23.04.2009, 17:08

Forenbeitrag von: »ph4nt0m«

DrawPrimitive Problem

Der letzte Parameter von DrawPrimitive erwartet immer die Anzahl der jeweiligen Primitiven und nicht die Anzahl der Vertizes. Du hast drei Vertizes erstellt, also hast du verschiedene Möglichkeiten: Du kannst daraus mit D3DPT_TRIANGLELIST ein Dreieck zeichnen, dann wäre der letzte Parameter 1 (für ein Dreieck, welches natürlich drei Vertizes braucht). Wenn du jedoch den Typ zu D3DPT_LINELIST änderst, erwartet Direct3D pro Linie zwei Vertizes (jeweils Start- und Endpunkt). Da du nur drei Vertizes...

23.04.2009, 12:22

Forenbeitrag von: »ph4nt0m«

#include "iostream" wird wie #include <iostream

Es hilft nichts, wenn du die Headerdateien zu deinem Programm dazulegst, da die Einfügung zur Kompilierzeit erfolgt und damit sowieso bereits in der exe vorhanden ist. Was der andere PC braucht, sind die entsprechenden Bibliotheken (*.dll), um dein Programm ausführen zu können. Der Unterschied zwischen den beiden #include-Direktiven besteht einzig und allein darin, dass bei der Variante mit den Anführungszeichen zuerst in deinem Projektverzeichnis gesucht wird. Wurde die Datei dort nicht gefunde...

20.04.2009, 00:33

Forenbeitrag von: »ph4nt0m«

std::string in const char konvertieren

Du meinst sicherlich ein const char*. Die Funktion die du suchst ist std::string::c_str. Übergib der Funktion, die einen C-String erwartet also einfach text.c_str(), wenn dein std::string z.B. text heißt

19.04.2009, 22:50

Forenbeitrag von: »ph4nt0m«

Fehler beim Speichern und Laden einer Struktur

C-/C++-Quelltext 1 Werte.Points[10] = 10000000; Dieser Fehler ist immer noch drin. Wenn du wirklich 11 statt 10 Werten speichern willst, musst du das Array auch mit einer entsprechenden Größe anlegen. Außerdem solltest du am besten noch das "using namespace std;" entfernen und stattdessen std::ofstream usw. verwenden.

19.04.2009, 21:37

Forenbeitrag von: »ph4nt0m«

Fehler beim Speichern und Laden einer Struktur

Ganz genau, also hast du was diese Problematik angeht zwei Möglichkeiten für deine Struktur: C-/C++-Quelltext 1 2 3 4 5 struct m_sWerte { int Points[10]; char Names[10][20]; }; C-/C++-Quelltext 1 2 3 4 5 struct m_sWerte { int Points[10]; std::string Names[10]; }; Letztere Möglichkeit ist in C++ wohl die in den meisten Fällen empfehlenswerte Lösung, insbesondere da du so 10 Zeichenketten im Prinzip beliebiger Länge ablegen und diesen genau so Daten zuweisen kannst, wie du es in deinem ursprünglic...

19.04.2009, 20:49

Forenbeitrag von: »ph4nt0m«

Fehler beim Speichern und Laden einer Struktur

Ohne jetzt den Quelltext komplett durchgeschaut zu haben, kann ich dir zumindest schon einmal sagen, dass du einige Bereichsüberschreitungen in deinem Code hast: C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 Werte.Points[0] = 6500; Werte.Points[1] = 18000; Werte.Points[2] = 19200; Werte.Points[3] = 31400; Werte.Points[4] = 38000; Werte.Points[5] = 50200; Werte.Points[6] = 61200; Werte.Points[7] = 88700; Werte.Points[8] = 96100; Werte.Points[9] = 142100; Werte.Points[10] = 10000000; // Hier ist ein Fe...

Werbeanzeige