kategorie: Amiga E, MUI
[#1] [E, MUI] Hook z parametrem
W moim programiku wywołuję funkcje przez hooki i dotychczas mi to wystarczało, ale potrzebowałbym też czasem wywołać taką funkcję z przekazaniem jej parametru(-ów) i nie wiem jak powinno wyglądać wywołanie takiego hooka który przekaże swojej funkcji parametry. Teraz (bez parametrów) wygląda to tak:

domethod(bt_copyhex,[MUIM_Notify, MUIA_Pressed, FALSE, MUIV_Notify_Self, 2, MUIM_CallHook, write_clipHook])


Hook wywołuje funkcję

PROC writeClip()
ENDPROC

bez żadnych parametrów, a chciałbym żeby funkcja dostała od hooka np. parametr x i coś z nim mogła zrobić:

PROC writeClip(x)
ENDPROC


Da się tak w jakiś prosty sposób? Tylko, proszę nie piszcie o robieniu własnych klas....
[#2] Re: [E, MUI] Hook z parametrem

@R-Tea, post #1

Najprościej jest zrobić własną klasę i wywołać metodę z parametrami.
[#3] Re: [E, MUI] Hook z parametrem

@R-Tea, post #1

A nie wystarczy skorzystać z pola h_Data w strukturze Hook?
[#4] Re: [E, MUI] Hook z parametrem

@Hexmage960, post #3

Można. Taki kod jest jednak mniej czytelny.
[#5] Re: [E, MUI] Hook z parametrem

@Hexmage960, post #3

@ Hexmage
Gdzie znajdę tę strukturę? Przejrzałem includy (czyli MODULE) w moim kodzie, te związane z obsługą hooków, i są tylko dwa: utility/hooks oraz tools/installhook. W module utility/hooks jest coś takiego:

New Shell process 9
Ram Disk:> showmodule HD1:Development/E/Modules/utility/hooks.m
ShowModule v1.10 (c) 1992 $#%!
now showing: "hd1:development/e/modules/utility/hooks.m"
NOTE: don't use this output in your code, use the module instead.

(----) OBJECT hook
(   0)   mln:mln (or ARRAY OF mln)
(   8)   entry:LONG
(  12)   subentry:LONG
(  16)   data:LONG
(----) ENDOBJECT     /* SIZEOF=20 */


Natomiast tools/installhook zawiera tylko funkcję robiącą za mnie całą robotę z instalacją hooka.

@ Krashan
W MUI autodocach jest przykład notyfikacji, która wywołuje hooka w ten sposób:
DoMethod(propobj,MUIM_Notify,MUIA_Prop_First,MUIV_EveryTime,
                 propobj,3,MUIM_CallHook,&prophook,MUIV_TriggerValue);

Czy gdybym w miejscu MUIV_Trigger_Value wstawił coś swojego, to mogę to jakoś odebrać w funkcji, którą hook wykona?

Ostatnia aktualizacja: 05.02.2017 16:41:56 przez R-Tea
[#6] Re: [E, MUI] Hook z parametrem

@R-Tea, post #5

(  16)   data:LONG

Pole data w tej strukturze możesz dowolnie ustalić. Ponieważ wskaźnik do struktury Hook jest przekazywany do funkcji, to możesz za pomocą tego pola przekazać jej wartość.
[#7] Re: [E, MUI] Hook z parametrem

@Hexmage960, post #6

Dzięki!
Takie dokształcające z MUI pytanie przy okazji mam. Przeglądałem drzewko MUI dzić i zobaczyłem, że w klasie Notify jest metoda MUIM_Set, a nie ma jej odpowiednika MUIM_Get
Są przecież makra set() i get() i są też metody (chyba z utility.library) OM_SET i OM_GET
Dlaczego autor MUI nie dodał MUIM_Get?
[#8] Re: [E, MUI] Hook z parametrem

@R-Tea, post #7

Pewnie dlatego, że prościej to zaimplementować makrem. Również dlatego, że MUIM_Set po prostu przydaje się w notyfikacjach, sens stosowania hipotetycznej MUIM_Get w notyfikacjach jest niewielki.

Ostatnia aktualizacja: 05.02.2017 22:02:15 przez Krashan
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem