kategorie: Amiga E, MUI
[#1] [E, MUI] SetAttrs i MUIA_NoNotify
Mam problem ze skorzystaniem z atrybutu MUIA_NoNotify.
Gdy robię to w ten sposób (przykład):
set(sl_r, MUIA_NoNotify, MUI_TRUE, MUIA_Slider_Level, c1)

kompilator EC krzyczy, że zła liczba argumentów. A gdy w ten sposób:
SetAttrs(sl_r, MUIA_NoNotify, MUI_TRUE, MUIA_Slider_Level, c1, TAG_DONE)

krzyczy, że nieznana funkcja.
W jakiej bibliotece ona siedzi?
[#2] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@R-Tea, post #1

SetAttrsA() jest w Intuition. Natomiast SetAttrs() jest makrem, które buduje taglistę na stosie i wywołuje SetAttrsA().
[#3] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@Krashan, post #2

A dlaczego zła liczba argumentów w set()? Wzorowałem się na przykładzie z autodoców MUI.
[wyróżniony] [#4] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@R-Tea, post #3

set() bierze trzy argumenty: obiekt, atrybut i wartość. Przy pomocy set() nie uda ci się użyć MUIA_NoNotify, bo musisz przekazać taglistę:
MUIA_SliderLevel, c1,
MUIA_NoNotify, TRUE,
TAG_END, 0

Coś mi się plącze po głowie, że AmigaE umożliwiało budowanie taglist w locie za pomocą nawiasów kwadratowych, tylko że ja ostatnio pisałem w tym języku chyba w 1998...
[#5] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@Krashan, post #4

Czyli muszę użyć SetAttrsA()?
[#6] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@R-Tea, post #5

Tak.
[#7] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@Krashan, post #6

dzięki OK
Dla zainteresowanych, by wątek był kompletny, tak to wygląda w AmigaE:
MODULE 'intuition/intuition'
...
ListCopy(lst_tags_sl_r, [MUIA_Slider_Level, c1, MUIA_NoNotify, MUI_TRUE, TAG_END, 0])
SetAttrsA(sl_r, lst_tags_sl_r)
[#8] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@R-Tea, post #7

Można (o ile dobrze pamiętam...) zapisać to krócej:

SetAttrsA(sl_r, [MUIA_Slider_Level, c1, MUIA_NoNotify, MUI_TRUE, TAG_END, 0])
[#9] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@forge, post #8

Czy to zero na końcu listy czasem nie jest tam zbędne?
[#10] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@R-Tea, post #9

Raczej musi być. Lista w E, 0 to koniec listy, żeby sobie nie brał losowych wartości z RAM.
[#11] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@R-Tea, post #9

W języku C byłoby zbędne. W E – nie wiem. TAG_END to też zero.

Ostatnia aktualizacja: 16.07.2017 08:17:20 przez Krashan
[#12] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@Krashan, post #11

W Amiga E też to 0 po TAG_END/TAG_DONE jest zbędne - sprawdziłem w przewodniku.
[#13] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@Hexmage960, post #12

Macie rację Ty i Krashan..
Sugerowałem się typem danych jaką jest lista, która musi być zakończona 0, i błędem który gdzieś tam kiedyś występował. Nie wiem czy w parsowaniu list właśnie.
[#14] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@R-Tea, post #7

Czy analogicznie jak SetAttrsA() dla set() istnieje odpowiednik dla domethod()?
ListCopy(lst_tags_sl_r, [MUIA_Slider_Level, c1, MUIA_NoNotify, MUI_TRUE, TAG_END, 0])
SetAttrsA(sl_r, lst_tags_sl_r)

Mam bardzo długą listę parametrów i chciałbym je przekazać w postaci przygotowanego wcześniej wskaźnika do listy, ale w ten sposób to nie działa:
ListCopy(cycle_chain_list,
 		 ['MUIM_Window_SetCycleChain',
		 'sl_r_l', 'sl_g_l', 'sl_b_l',
		 'sl_r', 'sl_g', 'sl_b',
		 'cl_code',
		 'str_hdb', 'bt_copyhdb',
		 'str_htmlname', 'pop_bt', 'bt_copyname',
		 'lmp_r[0]', 'lmp_r[1]', 'lmp_r[2]', 'lmp_r[3]', 'lmp_r[4]', 'lmp_r[5]', 'lmp_r[6]', 'lmp_r[7]',
		 'lmp_g[0]', 'lmp_g[1]', 'lmp_g[2]', 'lmp_g[3]', 'lmp_g[4]', 'lmp_g[5]', 'lmp_g[6]', 'lmp_g[7]',
		 'lmp_b[0]', 'lmp_b[1]', 'lmp_b[2]', 'lmp_b[3]', 'lmp_b[4]', 'lmp_b[5]', 'lmp_b[6]', 'lmp_b[7]',
		 NIL], ALL)
domethod(win_glowne, cycle_chain_list)

mimo, że kompilator nie wyrzuca błędu.
[#15] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@R-Tea, post #14

[#16] Re: [E, MUI] SetAttrs i MUIA_NoNotify

@forge, post #15

Niestety, to nie działa. Kompilator nie zgłasza błędów, program odpala, ale nie ma spodziewanego efektu.
Usunąłem też apostrofy podejrzewając je o przyczynę, ale nic to nie zmieniło.
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