ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > HOOK's was ist das ? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
20.01.2004, 12:41 Uhr JensB Posts: 193 Nutzer |
Hi Leute ! Folgendes ich möchte ein Listview-Gadget in MUI benutzen (das MUI eigene oder NList,mal sehen) . In der Form etwa In der Form etwa : I Status I Name I I x I Bernd I I f I Stift I I k I Gesselle 1 I [editiert] das I soll eine Vertikale Linie sein ,aber die Formatierung haut hier nicht hin ,mhhh. x,f,k sollen als Image drinne sein. Ich habe Sourcecodes und mir die AutoDocs mal angeschaut (mit meinem bescheidenem English,wird zwar immer besser aber es dauert) ,da steht was mit "MUI???_ConstructHook, &constructhook," (habs jetzt nicht ganz im Kopf,hab nur gerade Pause im Betrieb), hab mich dann weiter umgeschaut nach diesen "Hook's" (aber mein English,da wirds dann doch schon eng) vieleicht kann mir mal jemand von euch in kurzen worten erklären (und auf deutsch) was das auf sich hat. Wenn ich erstmal ne vorstellung habe was das ist dann komm ich der sache schon einiges näher und das übersetzen fällt mir dann leichter (auch das verstehen der zusammenhänge beim übersetzen wenn ich wenigstens etwas deutsches irgendwo mal gehört habe. RKRM habe ich *g* schon ewig hat mir ja damals auch geholfen aber "Hook's" hab ich noch nie gebraucht ,erst mit MUI hab ich das gefühl ,wirds benötigt. Mfg JensB [ Dieser Beitrag wurde von JensB am 20.01.2004 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
20.01.2004, 14:03 Uhr thomas Posts: 7718 Nutzer |
Ein Hook bietet dem System die Möglichkeit, selbständig eine Routine in deinem Programm aufzurufen. Sozusagen "zurückzurufen" (call-back-hook). Üblicherweise wird ein Pointer auf ein struct Hook übergeben, in dem einige Daten über deine Routine stehen: struct Hook { struct MinNode h_MinNode; ULONG (*h_Entry)(); ULONG (*h_SubEntry)(); APTR h_Data; }; h_Entry ist die Adresse deiner Routine. Diese wird nach Assembler-Konvention mit den Parametern in Registern aufgerufen (s.u.). h_SubEntry ist ein zweiter Einsprungpunkt, der aber vom System nie genutzt wird. Wenn deine Unterroutine ein (unbehandeltes) C-Programm ist, dann übergibst du in h_Entry eine kleine Assembler-Routine und in h_SubEntry dein C-Programm. Die Assember-Routine schiebt die Registerinhalte auf den Stapel und ruft das C-Programm. h_Entry wird mit folgenden Parametern aufgerufen: A0 - Zeiger auf die Hook-Struktur selbst A1 - Zeiger auf eine Parameter-Structur ("message") A2 - Hook-specifische Adresse ("object") Üblicherweise deklarierst du deine Hook-Funktion so: ULONG __saveds __asm HookFunc(register __a0 struct Hook *hook, register __a2 APTR object, register __a1 APTR message); Dann kannst du HookFunc direkt in h_Entry übergeben und mußt dich nicht um h_SubEntry kümmern. Ansonsten müßtest du ein kleines Assembler-Programm schreiben: _hookEntry: move.l a1,-(sp) ; push message packet pointer move.l a2,-(sp) ; push object pointer move.l a0,-(sp) ; push hook pointer move.l h_SubEntry(a0),a0 ; fetch C entry point ... jsr (a0) ; ... and call it lea 12(sp),sp ; fix stack rts und deine C-Funktion normal deklarieren: ULONG HookFunc(struct Hook *hook,APTR object,APTR message); Dann machst du hook->h_Entry = hookEntry; hook->h_SubEntry HookFunc; Das System wird dann wannimmer es möchte (in deinem Fall für jede Zeile des ListView) die Hook-Funktion entsprechend der Hook-Struktur aufrufen. Quelle: utility/hooks.h Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
20.01.2004, 14:46 Uhr Solar Posts: 3680 Nutzer |
(Selbst gelöscht, Blödsinn gepostet.) [ Dieser Beitrag wurde von Solar am 20.01.2004 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
20.01.2004, 15:04 Uhr JensB Posts: 193 Nutzer |
Zitat: Manchmal ist aus Blödsinn schon einiges enstanden. Man hat vieleicht daduch mal in einen gedankenblitz eine Idee gehabt und es funktionierte. Mfg JensB [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > HOOK's was ist das ? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |