Handles? Was kann ich mir darunter vorstellen?
-
Also ein Handel ist meistens ein INT Wert, für eine Resource oder ein Window.
Doch was passiert intern mit dem INT Wert?Z.b. lade ich ein Icon mit:
HICON myIcon = ExtractIcon(hInstance,"icon1.ico",0);Wenn ich an dieser Stelle ein Breakpoint mache und mir den "MemoryDump" (keine Ahnung wie ich das nennen soll, aber ich glaube ihr wißt was ich meine)
anschaue, steht für die Variable "myIcon" der Wert:0x0012FE30 02050745
^Addresse ^WertAlso ein Zeiger auf eine andere Adresse kann der Wert->02050745 nicht sein.
Denn dort ist der Speicher undefiniert. Wo stehen aber denn dann die Daten für mein Icon? Was fängt Windows mit dem Wert 02050745(Dezimal=33883973) an?
-
Afaik hat Windows intern eine Tabelle, mit der die ganzen Ressourcen verwaltet werden - und um da deine gewünschte Ressource rauszusuchen braucht Windows eben diesen Index

-
Und wo wird dann das im Speicher hingeladen? Also wo kopiert die Funktion
ExtractIcon() die Daten hin die es von "icon1.ico" gelesen hat?
Bekomm ich da irgendwie ein Pointer drauf? Plus eventuell Länge der Daten?
-
Mit den Handles werden die unterschiedlichsten Klamotten innerhalb von Windows referenziert. Als Adresse sind sie nicht brauchbar, jedoch gibt es immer eine Reihe von Funktionen, um an die entsprechenden Informationen zu kommen.
Was Du hier suchst ist vielleicht die Funktion
BOOL GetIconInfo( HICON hIcon, // icon handle PICONINFO piconinfo // icon structure );Die Struktur PICONINFO liefert die folgenden Daten:
typedef struct _ICONINFO { BOOL fIcon; DWORD xHotspot; DWORD yHotspot; HBITMAP hbmMask; HBITMAP hbmColor; } ICONINFO;Mit den Bitmap-Handles kommst Du dann vermutlich weiter (siehe MSDN).