Komfortabler Dateimanager mit vielen Funktionen

Verzwickter Code – Auflösung

By Sven on 02.04.2008 - 10:00 in Entwicklung

Die Antwort von Marcus zum verzwickten Code war richtig. In Zeile 17 wird für die Fensterklasse zusätzlicher Speicher angefordert, um in Zeile 29 das Handle zum Elternfenster zu speichern. Unter Win32 funktioniert auch alles wie gewünscht.

Es wird aber nicht beachtet, dass unter Win64 ein Fensterhandle nicht mehr vier Byte groß ist (DWORD), sondern acht Byte. Somit ist in der Fensterklasse nicht mehr genug Platz, um das Fensterhandle zu speichern. SetWindowLongPtr setzt daher den Fehlercode ERROR_INVALID_INDEX.

Zeile 17 muss also korrigiert werden zu

        wcTaskSwitch.cbWndExtra = sizeof(HWND);

Letztlich ist die Speicherung des Elternfensters aber auch total überflüssig, denn dieses lässt sich jederzeit über GetParent abrufen. Aber warum einfach, wenn es auch kompliziert geht.

Durch diesen Fehler ist es nicht möglich, den in den Infobereich minimierten SpeedCommander in der x64-Version per Tastatur wieder zu aktivieren. Bisher war dies noch keinem aufgefallen.

Es können keine Kommentare abgegeben werden.

Top