Problem mit Platform SDK
-
Ich habe ein Problem mit dem Platform SDK(Windows Server 2003 R2) und Visual C++ 2005. Ich habe damit begonnen Wrapperklassen für die Steuerelemente von Windows zu schreiben. Als ich dann die Utilityfunktionen für die CButton Klasse erstellen wollte kam es zu folgenden Fehler. Der Compiler findet die Makros Button_... einfach nicht. Die commctrl.h ist eingebunden und die Verzeichnispfade von VC2005 sind auch gesetzt. Bei näherer Betrachtung der commctrl.h ist mir aufgefallen das vor den Makros folgende Präpodirektive steht:
#if (_WIN32_WINNT >= 0x501)
Also habe ich in der Dokumentation nachgeschaut und bin auf folgende Versionsnummern gestoßen.
WinXP == 0x0501
Win2003 == 0x0502Die Werte stimmen doch garnicht überein oder irre ich mich da? Wie kann ich das
Problem beheben?MFG
DEADBEEF
-
Was meinst Du mit "stimmen doch gar nicht überein"!?
Was soll daran nicht stimmen?Bei dem ganz neuen PSDK reicht es übrigens aus, wenn Du folgendes definierst:
NTDDI_VERSION=NTDDI_WINXP
http://windowssdk.msdn.microsoft.com/en-us/library/ms736959.aspx
-
Danke für die schnelle Antwort, wie soll ich die Windowsversion definieren?
#define NTDDI_VERSION NTDDI_WINXP; // oder wie?
Das mit dem stimmt nicht überein war ein dummheitsfehler von mir. Kannst du mir vielleicht zeigen wie das geht?
-
Am einfachsten ist es, wenn Du diese Definition in den projekt-Einstellungen unter C/C++|Preprozessor-Definitionen einträgst. Dann in der Form:
[andere defines];NTDDI_VERSION=NTDDI_WINXP
-
Ich habe bei Project->Propeties->Configuration Properties->C++->Preprocessor genau das eingetragen aber ich bekomme immernoch Fehler das der Compiler die Makros nicht findet, außerdem werden die Makros immernoch grau in der IDE angezeigt(in der commctr.h).
-
Hast Du auch wirklich das neueste PSDK!?
SOnst musst Du die herkömmliche Art wählen:[andere defines];_WIN32_WINNT=0x0501;WINVER=0x0501
-
Super jetzt funktioniert es, wie gesagt habe ich das W2003 R2 SDK ob dass das neueste ist bin ich überfragt. Danke nochmals für die Antworten.
MFG DEADBEEF