WM_MOUSEWHEEL geht nicht
-
sorry, meinte *oder*.
-
thx, das
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)hab ich gelöscht, es funktioniert nur wenn ich die Zeile weglasse .
-
Du solltest eigentlich sowas machen (das zumindest meinte ifdef mit dem Satz "Man muss erst _WIN32_WINNT oder _WIN32_WINDOWS richtig definieren bevor man windows.h einbindet")
#define _WIN32_WINNT 0x0400 #include <windows.h>
-
Nein, du hast da wohl etwas falsch verstanden - so solltest du es machen:
#define _WIN32_WINNT 0x0400 // bzw. _WIN32_WINNT oder _WIN32_WINDOWS eben so definieren, das du das entsprechende System angibst für was die Anwendung sein soll #include <windows.h>edit: war wohl etwas zu langsam

-
jkarts schrieb:
thx, das
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)hab ich gelöscht, es funktioniert nur wenn ich die Zeile weglasse .
trottel

-
Ähhh, moment mal, diese Defines sind doch so in der winuser.h drinn, also das geprüft wird welches system vorhanden ist.
Oder anders gesagt, warum muß er WM_MOUSEWHEEL selber definieren, wenn es in der winuser.h bereits ist, nur bei ihm nicht, oder ist es bei anderen auch so? Bei mir nicht, da läuft es ohne eigene Definationen.
-
Er soll ja auch nicht WM_MOUSEWHEEL, sondern _WIN32_WINNT bzw. _WIN32_WINDOWS definieren

-
ifdef hatte die WM_MOUSEWHEEL defination angegeben und die Version, jkarts hatte aber die Versionsprüfung weggelassen und dann gings, also ist in seinen sdk Headern diese defination nicht drinn. Bei mir siehts so aus (winuser.h)
...... #define WM_MOUSEWHEEL 522 #define WM_MOUSEFIRST 512 #define WM_MOUSELAST 522 #define WM_MOUSEHOVER 0x2A1 #define WM_MOUSELEAVE 0x2A3 #if (_WIN32_WINNT >= 0x0400) #define WHEEL_DELTA 120 #define GET_WHEEL_DELTA_WPARAM(wparam) ((short)HIWORD (wparam)) #define WHEEL_PAGESCROLL UINT_MAX #endifAlso stimmt doch was mit den Headerdateien bei ihm nicht, oder?
-
MiC++ha schrieb:
jkarts hatte aber die Versionsprüfung weggelassen und dann gings, also ist in seinen sdk Headern diese defination nicht drinn. Also stimmt doch was mit den Headerdateien bei ihm nicht, oder?
Woher willst Du das wissen?
Wenn ich _WIN32_WINNT nicht definiere, überspringt er die definition von WM_MOUSEWHEEL. Was verleitet Dich zu der Aussage, das wäre in seinen Headern nicht enthalten? Es wird genau so da drin sein, wie ifdef es gepostet hat.
Hätte jkarts nun #define _WIN32_WINNT 0x400 vorm includen der windows.h angegeben, würde sein Compiler auch WM_MOUSEWHEEL kennen... Wo also ist das Problem?
Genauso wie in Deiner Header-Datei:
#if (_WIN32_WINNT >= 0x0400) #define WHEEL_DELTA 120 #define GET_WHEEL_DELTA_WPARAM(wparam) ((short)HIWORD (wparam)) #define WHEEL_PAGESCROLL UINT_MAX #endifWenn Du nicht ein #define _WIN32_WINNT 0x0400 angibst, meckert Dein Compiler bei WHEEL_DELTA und bei WHEEL_PAGESCROLL und bei GET_WHEEL_DELTA_WPARAM.
Probiers mal aus...
-
Hepi schrieb:
Wenn Du nicht ein #define _WIN32_WINNT 0x0400 angibst, meckert Dein Compiler bei WHEEL_DELTA und bei WHEEL_PAGESCROLL und bei GET_WHEEL_DELTA_WPARAM.
Probiers mal aus...
Das ist schon klar, aber er meckert nicht bei MOUSEWHEEL, daher ist die Frage ob er es in seiner winuser hat, und wenn ja, wie?
ifdef schrieb:
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) #define WM_MOUSEWHEEL 0x020A #endifDas hatte er vermutlich so kopiert, den er schrieb ja:
jkarts schrieb:
thx, das
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)hab ich gelöscht, es funktioniert nur wenn ich die Zeile weglasse
Also bleibt #define WM_MOUSEWHEEL über
WM_MOUSEWHEEL ist aber unabhängich egal ob WIN32_WINNT oder _WIN32_WINDOWS
also stimmt bei ihm doch was nicht, ich kann WM_MOUSEWHEEL auf 98se genauso verwenden wie bei XP, ohne die Version zu prüfen.
-
Da diese Message erst ab Windows 98 verfügbar ist, muss man die Versionsnummer richtig setzen.
-
done. schrieb:
Da diese Message erst ab Windows 98 verfügbar ist, muss man die Versionsnummer richtig setzen.
Das ist schon klar, und für w95 bindet man zmouse.h für MSH_MOUSEWHEEL ein, die Frage ist nur wer w95 noch hat?
Unabhängich davon, kann ich WM_MOUSEWHEEL ohne Versionsfestlegung verwenden und die meißten anderen auch denke ich, nur er halt nicht.
-
Unabhängich davon, kann ich WM_MOUSEWHEEL ohne Versionsfestlegung verwenden und die meißten anderen auch denke ich, nur er halt nicht.
Im Platform SDK, also den offiziellen Headern, ist auch diese "Versionprüfung" drin. Vielleicht definiert dein Compiler auch automatisch _WIN32_WINNT und/oder _WIN32_WINDOWS hoch genug.
-
Hmmm, ich habe nochmal geschaut, in der winuser.h die mit dem Dev-c++ ausgeliefert wird steht WM_MOUSEWHEEL ohne prüfung da, so wie ich das oben gepostet habe, in der des org. SDK stehts mit:
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) #define WM_MOUSEWHEEL 0x020A #endifIch glaub ich muß mal die Headerdateien beim Dev anpassen.