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

Jawaiica

Treue Seele

  • »Jawaiica« ist der Autor dieses Themas

Beiträge: 134

Wohnort: Hannover

Beruf: Student

  • Private Nachricht senden

1

29.07.2011, 01:44

[C++ WINAPI] Fenstergröße durch lesen von Textdatei schlägt fehl?

Hallo Leute,

ich bin grade etwas am Testen was DirectX und C++ generell betrifft und ich wollte mir eine Funktion schreiben, die die Fenstergröße in einer Optionen Textdatei ermittelt. Aus mir unbekannten Gründen funktioniert dies leider nicht. Hier erst einmal mein Quellcode der Funktion:

http://codepad.org/rSrnxj45


Die Textdatei hat nur eine Zahl als Inhalt und zwar als Test die Nummer 5. Sobald ich das Programm jetzt jedoch Debugge, kommt der Windows Fehler Sound aber keine Fehlernachricht. Wenn ich das Programm Releasen will, dann kommt eine Warnung von Microsoft Visual C++ mit der Meldung:

Zitat

Microsoft Visual Studio C Runtime Library hat einen schwerwiegenden Fehler in Test.exe gefunden. Klicken Sie auf "Unterbrechen", um das Programm zu debuggen, oder auf "Weiter", um es zu beenden.


Wenn ich nun auf Unterbrechen klicke, dann sehe ich, dass sich eine Datei in MV C++ geöffnet hat ( dbghook.c ). Mehr kam nicht.
Jetzt ist meine Frage:
Wieso passiert das, und gibt es eine andere Möglichkeit um an das gewünschte Ziel zu kommen?

Die Funktion habe ich direkt über meine CreateWindow Funktion geschrieben, sodass das Bild noch vor dem erstellen die Größe kennt.


MfG Jawaiica'
"Die Sekunde ist die Dauer von 9 192 631 770 Perioden der Strahlung, die dem Übergang zwischen den beiden Hyperfeinstrukturniveaus des Grundzustandes des Atoms Caesium 133 entspricht."

2

29.07.2011, 06:59

Beim überfliegen habe ich jetzt keinen Fehler entdecken können.
Du kannst es aber auch mit den Stream Klassen probieren die sind C++.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

3

29.07.2011, 09:34

Befindet sich die Datei Resolution2.txt im Ordner der Exe?
Das Beenden per PostQuitMessage würde ich mal mit einer MessageBox und einem return ersetzen.
Resolution könntest du auch mit einem Standardwert versehen, falls die Datei nicht gelesen werden konnte.
fka tm

4

29.07.2011, 11:04

Befindet sich die Datei Resolution2.txt im Ordner der Exe?
Das Beenden per PostQuitMessage würde ich mal mit einer MessageBox und einem return ersetzen.
Resolution könntest du auch mit einem Standardwert versehen, falls die Datei nicht gelesen werden konnte.


Und wenn: Ist darin auch ein gültiger Wert? Das bringt auch immer nette Fehler wenn da was drin ist was man eigentlich nicht abfragt.
ich würde nochmal ein "else" anfügen um so eine "Sicherheitskontrolle" zu haben. Natürlich solltest du dann den Wert von Resolution2.txt auf einen Wert zwischen 1 und 16 setzen.

MfG
Check

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

5

29.07.2011, 15:23

Ich habe jetzt auch kein Problem in der Codedatei gefunden, aber halb-offtopic würde ich ein switch-Statement statt dieser if ... else if ... usw. empfehlen. ;)
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

Jawaiica

Treue Seele

  • »Jawaiica« ist der Autor dieses Themas

Beiträge: 134

Wohnort: Hannover

Beruf: Student

  • Private Nachricht senden

6

29.07.2011, 15:59

Hallo und danke für die Antworten, bin grade nach hause gekommen und werde jetzt mal ein paar Änderungen vornehmen. Danke für den "else" Tipp, den werde ich dann umsetzen, genauso werde ich ein Switch statement nehmen statt if/else :)

Bin mal gespannt ob es jetzt geht^^

Edit: Also irgendwie ist das ja schon komisch^^ Wenn ich meine Klasse und WinMain.cpp Datei in MVC++ debugge / release, dann bekomme ich diesen Verweis auf die Debugg Datei von MVC++. Wenn ich allerdings die ganzen Dateien in Code::Blocks einfüge(incl. der gdi32.lib) dann bekomme ich KEINEN Fehler und es funktioniert wunderbar!

Hat jemand eine Idee wieso das bitte so ist? oO
"Die Sekunde ist die Dauer von 9 192 631 770 Perioden der Strahlung, die dem Übergang zwischen den beiden Hyperfeinstrukturniveaus des Grundzustandes des Atoms Caesium 133 entspricht."

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Jawaiica« (29.07.2011, 16:18)


7

29.07.2011, 17:20

Ist das soooo wichtig? Hauptsache es klappt, oder?
Aber wenn es nur auf einem Compiler klappt, kann es ja eigentlich nur ein Fehler beim einbinden sein. Sei es eine *.lib oder eine Header-Datei.


Wenn du if/else nicht mehr nutzt, sondern switch/case, dann statt else dann default, ist ja klar, nicht? Ich wollte das jetzt nur nochmal aufführen, weil Gemäß deines Umsetzungsplanes stelle ich mir dabei so was vor:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
switch(irgendwas)
{
 case irgendwas:
 {
  ...
 }
 else
 {
  ...
 }
}


Und das geht natürlich nicht. Aber da es bei dir ja zu funktionieren scheint, hast du es ja richtig ausgeführt. Aber wer weiß, vielleicht hilft es ja jemandem von der Suchmaschine. :lol:

MfG
Check

8

29.07.2011, 18:32

Beim nächsten Release fällt dann das switch auch noch weg, weil er eine XML-Datei hernimmt, in der die Auflösung (Breite und Höhe) angegeben sind.
(sagt zumindest meine Kristallkugel)
fka tm

Jawaiica

Treue Seele

  • »Jawaiica« ist der Autor dieses Themas

Beiträge: 134

Wohnort: Hannover

Beruf: Student

  • Private Nachricht senden

9

30.07.2011, 00:22

XML Datei?^^ ist das net was fürs www? Wieso sollte ich denn ne XML Datei nehmen? :s
"Die Sekunde ist die Dauer von 9 192 631 770 Perioden der Strahlung, die dem Übergang zwischen den beiden Hyperfeinstrukturniveaus des Grundzustandes des Atoms Caesium 133 entspricht."

10

30.07.2011, 00:54

xD

Warum nutzt du eigentlich nicht in die Registry? Jetzt mal so unabhängig vom tiefen Grund des Themas.

MfG
Check

Werbeanzeige