in WINUSER.H gibt es z.b. so was
Code: Alles auswählen
#if(WINVER >= 0x0500)
wie macht man das mit Xbase++ und *.CH Dateien ?
Moderator: Moderatoren
Code: Alles auswählen
#if(WINVER >= 0x0500)
Code: Alles auswählen
#define GRENZWERT 100
...
#if AktuellerWert > GRENZWERT
...
#endif
Du arbeitest zuviel mit Windevbrandelh hat geschrieben:
oder #ifdev
ich meine ja die *.CH Include Dateien ... da kann ich ja kein DO CASE oder OS() machen.brandelh hat geschrieben:Wobei wenn ich die Frage noch mal lese ...
Konstanten für das OS() werden normalerweise ja nicht beim Compilieren bestimmt, somit würde ich dort eher eine do case mit OS(OS_VERSION) ... oder os(OS_FAMILY) nutzen.
Code: Alles auswählen
#if(WINVER >= 0x0500)
Code: Alles auswählen
#INCLUDE "SdkDdkVer.inc"
#INCLUDE "WinDef.inc"
#IF NOT %DEF(%WINVER)
%WINVER = &H0500 ' version 5.0
#ENDIF ' NOT %WINVER
Code: Alles auswählen
#IF NOT %DEF(%WINVER)
%WINVER = &H0500
#ENDIF ' WINVER
Code: Alles auswählen
'
' %WIN32_WINNT version constants
'
%WIN32_WINNT_NT4 = &H0400
%WIN32_WINNT_WIN2K = &H0500
%WIN32_WINNT_WINXP = &H0501
%WIN32_WINNT_WS03 = &H0502
%WIN32_WINNT_WIN6 = &H0600
%WIN32_WINNT_VISTA = &H0600
%WIN32_WINNT_WS08 = &H0600
%WIN32_WINNT_LONGHORN = &H0600
%WIN32_WINNT_WIN7 = &H0601
Code: Alles auswählen
'
' if versions aren't already defined, default to most current
'
Code: Alles auswählen
#IF NOT %DEF(%WINVER)
#IF %DEF(%WIN32_WINNT)
' set WINVER based on %WIN32_WINNT
%WINVER = %WIN32_WINNT
#ELSE
%WINVER = &H0601
#ENDIF
#ENDIF
ich habe noch noch nie ausprobiert ...brandelh hat geschrieben:warum sollte man OS() und DO CASE nicht in einer .CH Datei machen können ?
Es kann zwar sein, dass dies die Zeilenzähler beim debuggen durcheinander bringt, aber erlaubt ist das allemal.
AHA ja ... das klingt "logisch" =D>brandelh hat geschrieben:Ich denke ich verstehe, der Entwickler selbst kann die Konstante %WIN32_WINNT setzen, wenn er möchte, dass %WINVER einen anderen als den höchten Windowsstand zurück gibt.
Warum sollte er sowas tun ?
Nun wenn das Programm auf einem Windows 98 laufen soll, dann muss man die Konstante auf den passenden Wert setzen um zu verhindern, dass Konstanten und Werte gesetzt werden, die Win98 gar nicht verarbeiten kann !
Die EXE wird also begrenzt, wie z.B. bei den CPU Möglichkeiten (Zielsystem 286, 386 etc.)