InvalidateRect aus WINAPI läßt sich nicht ansprechen
-
Hallo,
ich versuche die Funktion InvalidateRect aus WINAPI zu benutzen.TRect myRect; HWND hwnd; myRect = BelegeRect(); //belegt myRect mit Top, Bottom, Left, Right InvalidateRect(hwnd, &myRect, false);
Selbst, wenn ich Windows.h, Winuser.h include will er diese Funktion nicht annehmen.
Stattdessen meldet er:[BCC32 Fehler] Unit1.cpp(2746): E2247 Zugriff auf '_fastcall TCustomGrid::InvalidateRect(const TGridRect &)' nicht möglich
Kann mir einer einen Tipp geben, wie ich hier weiterkomme?
-
Versuch es mal mit ::InvalidateRect().
-
Hallo @_matze
Volltreffer, der Compiler frißt das jetzt. Danke.Habe bei "Richard Kaiser C++ mit dem Borland C++ Builder" nachgeschaut.
Mit einem Ausdruck, der mit "::" beginnt, kann man einem global deklarierten Namen ansprechen, der durch eine lokale Deklaration verdeckt ist."
Bedeutet das, dass alle WINAPI Funktionen global deklariert sind und nur mit "::" ansprechbar sind?
-
Nein, normalerweise kannst du die WinAPI-Funktionen ganz normal aufrufen, es sein denn, es gibt im lokalen Namespace eine Funktion gleichen Namens. Dann wird diese vorgezogen, und du musst halt "::" voranstellen, um die Funktion des globalen Namespaces zu verwenden. In deinem Fall hat die Klasse TCustomGrid offenbar eine Methode InvalidateRect. Probier es ruhig mit anderen WinAPI-Funktionen aus, bei denen es keine Überschneidungen gibt => Funktioniert auch ohne "::".
-
Hallo @_matze,
Deine Erklärung klingt logisch. Ich hab's auch mal mit einer anderen WINAPI-Funktion getestet. Es bestätigt, was Du sagst. In der Regel lassen sich die WINAPI-Funktionen auch ohne "::" ansprechen.
Danke.