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

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

1

20.03.2008, 20:58

Windows Versionen

Hallo

Ich habe gerade eine kleine Meinungsverschiedenheit mit dem VC++ 08.

Ursprünglich wollte ich einfach einfach die Messages von meiner Maus abfangen. Nun bis auf WM_WHEEL ging das auch. Dort hat er immer gemekert. Bin natürlich dem Problem nachgegangen und siehe da:Anscheinend habe ich noch keine neue Version. (Das Feature ist seit Win98 verfügbar... :roll: ) - Habe das neue PSDK geladen und das Problem habe ich immernoch. Bin dann auf die Datei: Winuser.h gestossen und habe dort nach dem Problem gesucht.

Zitat

#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
#define WM_MOUSEWHEEL 0x020A
#endif


Da bin ich schon stutzig geworden.. Warum zum Teufel ist das ausgeschwärtzt?!? (edit: also das #define WM_MOUSEWHEEL ist ausgeschwärtzt, wenn die IDE anzeigt, dass das define falsch ist)

Ok. Vielleicht irgendwo was altes rumschwirren. Und bin dann auf WinResrc.h gekommen. Und dort steht:

Zitat

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0500
#endif


So tollkühn, wie ich bin habe ich mal flott aus dem 0x500 ein 0x501 gemacht,aber das hat auch nichts gebracht.

Also ich habe was gelesen, dass man das entweder in der IDE einstellen kann oder man das hald per #define definiert, was hier ja auch eindeutig gemacht wird.
Also jemand eine Idee, warum das ausgeschwärtzt ist?

lg

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

20.03.2008, 21:49

Also ich habe mittlerweile etwas gefunden, was das Problem behebt.

C-/C++-Quelltext

1
2
3
4
5
//Aus der Doku.

#ifndef WM_MOUSEWHEEL
#define WM_MOUSEWHEEL WM_MOUSELAST+1 
    // Message ID for IntelliMouse wheel

#endif


Es funktioniert. (Bin aber nicht sicher, ob es 100% richtig funktioniert)

Aber ich finde das ist eine sehr schlechte Lösung. Da ich ja sonst nicht weiss, was der sonst noch deaktiviert hat, ausser dem Wheel..

Also für Ideen weiter hier posten. :)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

20.03.2008, 21:58

Es hat einen Grund warum das so ist. Und zwar geht es um die Abwärtskompatibiltät. Du wirst noch auf einige andere Funktionen stoßen die per define "ausgeklammert" sind. Wenn man diese nutzen will, muss man eben die Windowsversion angeben. Z.B. vor dem Windows-Header #define _WIN32_WINNT 0x0400. Das andere würde ich ganz schnell löschen. Sinn des ganzen ist, dass das PSDK auch für win95,win98, winME usw. kompatibel sein soll. Da es für diese aber nciht alle Funktionen gibt, mus man bei neueren Sachen die Windowsversion angeben. Damit sorgt man natürlich dafür, dass dieses Programm auf älteren windowsverisonen nicht mehr läuft.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

4

21.03.2008, 00:40

Also das selber zu definieren ist die denkbar schlechteste Lösung!

C-/C++-Quelltext

1
2
#define _WIN32_WINNT 0x0501
#include <windows.h>
... dann geht es.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

21.03.2008, 11:25

Zitat von »"Nox"«

...Wenn man diese nutzen will, muss man eben die Windowsversion angeben. Z.B. vor dem Windows-Header #define _WIN32_WINNT 0x0400. Das andere würde ich ganz schnell löschen. ...

Vielleicht ist die Formulierung nicht ganz so geschickt gewesen, aber was ich damit sagen wollte war, dass man da am besten nichts selbst rumschreibt bzw. rumdefiniert, sondern einfach nur die Version per define angibt ;) .
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

6

21.03.2008, 12:08

Zwar etwas offtopic, aber weiß jemand die Versionsnummer von Windows Server 2008? Ist das 6.1? Hab zwar schon Google bemüht, aber die Seiten sind alle noch bei Vista.

Sheddex

unregistriert

7

21.03.2008, 12:25

MSDN ;)
Ist 6.0, wie bei Vista.

8

21.03.2008, 12:40

Danke! Hätte ich auch drauf kommen können. :roll:
Dann kann man die beiden wohl nur anhand der Buildnumber unterscheiden?

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

9

21.03.2008, 13:38

Zitat von »"Deviloper"«

Also das selber zu definieren ist die denkbar schlechteste Lösung!


Also das ist eben in der Doku im Beispiel gestanden, darum habe ich das einfach mal ausprobiert. (Fand es aber eigentlich auch nicht wirklich geschickt)

Das mit der Version geht so auch. Aber was mich eben stuzig gemacht hat, war, dass in der WinResrc.h das ja eigentlich richtig definiert ist.

C-/C++-Quelltext

1
2
3
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0500
#endif


Da ist es ja eigentlich genügend definiert, hat aber irgendwie keine Auswirkungen auf mein Projekt. Naja. Ich werde es jetzt einfach mal immer die Version definieren, wenn ich es brauche. Ich gehe nämlich mal davon aus, dass die meisten eh über Win98 habe. ;)

Werbeanzeige