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

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

1

02.10.2006, 17:49

Probleme mit der MessageBox

Hey. Ich sitze nun schon seit gestern an Listing 2.51 aus Davids Buch. Erst hatte ich Probleme mit dem Win32 Projekt. Habe aber hier im Forum ne gute Hilfe gefunden.
Nur die MessageBox'en machen mir noch Probleme. Im Internet ist mir aufgefallen das vor den Strings(also Parameter 2 und 3) immer ein "L" steht. Dadurch ging es dann auch. Nur bei Listing 2.51 ist der 2te Parameter ein char. Wenn ich diesen nun als 2tes Parameter angeben genau wie im Listing bekomme ich folgenden Fehler:

Quellcode

1
2
3
4
5
warning C4996: 'sprintf' wurde als veraltet deklariert
        d:\programme\microsoft visual studio 8\vc\include\stdio.h(345): Siehe Deklaration von 'sprintf'
 Meldung: "This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details."
error C2664: 'MessageBoxW': Konvertierung des Parameters 2 von 'char [1024]' in 'LPCWSTR' nicht möglich
 Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.


Nochmal der Codeteil für die ohne Buch:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
        char acAdapterInfo[1024];
        sprintf(acAdapterInfo, "Adapter-ID: %d\n Name: %s\n Treiber: %s\n nTreiberversion: %d",
                               iAdapter,
                               pAdapters[iAdapter].Description,
                               pAdapters[iAdapter].Driver,
                               pAdapters[iAdapter].DriverVersion);

        MessageBox(NULL, acAdapterInfo, L"Adapter gefunden", MB_OK|MB_ICONINFORMATION);
„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.“

Sheddex

unregistriert

2

02.10.2006, 17:51

MessageBoxW und wchar_t und swprintf_s.

Such' mal nach Unicode und Secure Functions.

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

02.10.2006, 18:37

Habe mal gesucht aber noch nichts wirkliches gefunden. Kann man das nicht einfach abstellen? Kann es zwar in den Projekteinstellungen abstellen aber es passiert nichts.
Habt ihr vielleicht noch Tipps was ich machen kann? Ich gehe ja mal davon aus das ich nicht der einzige hier bin der vs2005 benutzt und das Problem hatte.
„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.“

Sheddex

unregistriert

4

02.10.2006, 18:42

Unicode stellt man nicht ab, Unicode ist Zukunft.

Prinzipiell einfach an vorgefertigte WinAPI Funktionen ein W dranhängen, wchar_t statt char benutzen und ein L vor Strings setzen.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

5

02.10.2006, 18:45

Wenn du Fortschritt willst: Unicode nutzen
Wenn du auf die ANSI-Variante angewiesen bist: MessageBoxA

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

03.10.2006, 13:39

Naja bis auf die MessageBox geht ja nun alles. Und da ist das Problem ja auch nur das sie als 2ten Patameter nen char nehmen soll. Ich hoffe mal ich werde weiterhin größtenteils auf Messageboxen verzichten können;)
Also danke für die Tipps
„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