[#1] [MUI] położenie kursora myszy
Czy MUI ma jakiś własny mechanizm pozwalający odczytać nad którym aktualnie obiektem znajduje się kursor myszy?

[#2] Re: [MUI] położenie kursora myszy

@R-Tea, post #1

MUIA_Window_MouseObject. Jest tez takie cos:

#define MUIM_WhichObject 0x8042867c

o = DoMethod(obj, MUIM_WhichObject, x, y);

obj - okno albo grupa.

nie wiem czy dziala w 3.8. w 3.9 tak.
[#3] Re: [MUI] położenie kursora myszy

@kiero, post #2

A co mam okreslić w x i y?
[#4] Re: [MUI] położenie kursora myszy

@R-Tea, post #3

hmm a nie mozesz subklasowac menu i wtedy bedziesz miec ale ktory to atrybut juz nei pamietam

[#5] Re: [MUI] położenie kursora myszy

@R-Tea, post #3

pozycje dla ktorej chcesz wyszukac obiekt. ale ogolnie to muia_window_mouseobject powinno ci wystarczyc
[#6] Re: [MUI] położenie kursora myszy

@kiero, post #5

W autodocach mui3.8 pisze, że można ustawić notyfikację na MUIA_Window_MouseObject żeby się dowiedzieć nad którym objektem jest aktualnie wskaźnik myszy. Ustawiłem notyfikację i faktycznie to działa, jako odbiornik dałem jakiś textObject któremu zapodawałem jakiś string na szywno.
Wycinki ze żródła:
...
DoMethod(mainwindow, MUIM_Notify, MUIA_Window_MouseObject, MUIV_EveryTime, app, 2, MUIM_Application_ReturnID, ID_WHICHSQUARE);

...
case ID_WHICHSQUARE:
{
set(tx_coords, MUIA_Text_Contents, "BlaBla");
break;
}
...

Działa od razu gdy kursor pojawi się nad wewnętrzną częścią okna, czyli nad obiektem głownej grupy okna.
Ale ja bym chciał otrzymać jakoś wskaźnik do obiektu nad którym aktualnie wisi mousepointer.
[#7] Re: [MUI] położenie kursora myszy

@R-Tea, post #6

jak juz uzywasz notyfikacji to obiekt masz jako MUIV_TriggerValue. Jezeli nie, to robisz po prostu get(win, MUIA_Window_MouseObject, &obj) i tyle.

PS. ReturnID to zlo.
[#8] Re: [MUI] położenie kursora myszy

@kiero, post #7

@ kiero
jak juz uzywasz notyfikacji to obiekt masz jako MUIV_TriggerValue

Działa :D
DoMethod(mainwindow, MUIM_Notify, MUIA_Window_MouseObject, MUIV_EveryTime, tx_coords, 4, MUIM_SetAsString, MUIA_Text_Contents, "%ld", MUIV_TriggerValue);


PS. ReturnID to zlo.

Bardzo dobrze to wiem
Trochę lepsze byłyby hooki, a najlepsze własne klasy.
[#9] Re: [MUI] położenie kursora myszy

@kiero, post #7

@ kiero

ok, fajnie to działa, ale prosiłbym cię o dokładniejsze wyjaśnienie o co chodzi z tymi x i y, bo potrzebuję ograniczyć śledzenie kursora tylko do określonej grupy, więc uzyłbym tu WhichObject, a tego nie ma nawet w autodocach mui4.

o = DoMethod(obj, MUIM_WhichObject, x, y);
[#10] Re: [MUI] położenie kursora myszy

@R-Tea, post #9

dlatego subklasuj obiektmenu i tam bedziesz mial tag ktory powie ci ktora pozycje czy ktora grupa.

[#11] Re: [MUI] położenie kursora myszy

@AmiChris, post #10

@amichris

a ja ciagle nie wiem co ma menu z tym wspolnego:)

@r-tea

no napisalem ci jak dziala whichobjecy. x/y to wspolzedne w oknie dla ktorych chcesz wyszukac obiekt. obj to obiekt grupy. o to obiekt ktory znajduje sie na wspolzednych x/y. wiec..:

obiekt_w_przeszukiwanej_grupie=DoMethod(przeszukiwana_grupa,xmyszy,ymyszy).

umieszczasz sobie to np w eventhandlerze (inne miejsce ma maly sens) i gotowe.
[#12] Re: [MUI] położenie kursora myszy

@kiero, post #11

Och boszzz mnie caly czas odczyt nad ktorym obiektem = odczyt pozycji w menu.
sorki wielkie.

[#13] Re: [MUI] położenie kursora myszy

@kiero, post #11

@ AmiChriss
Och boszzz

No właśnie, nie mogłem zaczaić o co ci chodzi z tem menu :D Poza tym, własne klasy, to dla mnie za wyskoko, mam lęk wysikości i słabe płuca :p
Mam nadzieję kiedyś w końcu opanować hooki na tyle, żeby nie musieć zrzynać i dopasowywać dla swoich potrzeb gotowych jakichś przykładów. Nie wiem co jest z tymi hookami że mam z nimi takie kłopoty, pewnie przez używanie pod MOSem VBCC 68k i kompilację pod tenże procek przez zwykłe "vc zrodlo.c -lauto" Ten parametr na końcu podpowiedział mi kiedyś ktoś ze starej sceny, bo bez tego to już w ogóle była porażka. Ale mimo to większość przykładów z MUI3.8 nie da się w ten sposób skompilować. Na ile pamiętam to na klasyku z OS3.1 i tym samym kompilatorem nie miałem tego problemu.


@ kiero
no napisalem ci jak dziala whichobjecy. x/y to wspolzedne w oknie dla ktorych chcesz wyszukac obiekt. obj to obiekt grupy.

Tylko że ja chcę zapytać NAD KTÓRYM OBIEKTEM W TEJ CHWILI ZNAJDUJE SIĘ MOUSE POINTER a nie JAKI OBIEKT ZNAJDUJE SIĘ NA WSPÓŁŻĘDNYCH X,Y, innymi słowy, w którym sklepie w Gliwicach są SDRAMy, a nie czy dostanę SDRAMy w sklepie X w Gliwicach :D
Ale, to już mniej ważne, bo chyba jednak faktycznie MUIA_Window_MouseObject mi wystarczy.
[#14] Re: [MUI] położenie kursora myszy

@R-Tea, post #13

dosyc niecodzienne wymaganania masz :).

Wcale nie jest tak trudno zainteresuj sie programem Krashana Chocolate Castle.hooki tylko do prostych rzeczy reszta suklasowanie.VBCC bl ok dla klasyka ale dla mosa lepszy gcc.zintegrowane srodowisko,jednym pstryczkiem konfigurujesz,drugim kompiljesz i 3 uruchamiasz....a
potem juz reset ;) OK

Jest kurs Krashana i to bardzo dobry.ponaciskajcie(delikatnie) na niego niech dorobi wiecej odcinkow bo imo warto a do tego dochodzi wiele bajerow mui4,wielowatkowsc,cache etc..

Krashan poswiec sie prosimy :D

[#15] Re: [MUI] położenie kursora myszy

@R-Tea, post #13

"Tylko ze ja chce zapytac NAD KTÓRYM OBIEKTEM W TEJ CHWILI ZNAJDUJE SIĘ MOUSE POINTER a nie JAKI OBIEKT ZNAJDUJE SIĘ NA WSPÓLZEDNYCH X,Y,"

...i podalem ci gotowe rozwiazanie. tylko ze jak masz wstret do subklasowania to nie potrafiles go uzyc. a powinienes zrobic to tak, ze tworzysz subklase grupy w ktorej instalujesz eventhandler reagujacy na IDCMP_MOUSEOBJECT. potem po otrzymaniu wiadomosci wyszukujesz obiekt pod mysza (wspolzedne dostajesz w IntuiMessage i przekazujesz wlasnie jako x i y) i gotowe. kwestia moze 20 linijek kodu subklasy. bez subklasowania daleko nie zajedziesz i bedziesz sie meczyl z banalnymi problemami. zamiast uczyc sie hookow (ktore tez sa zlym pomyslem) naucz sie pisac subklasy. to tylko wydaje sie trudne.
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