Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

SetCursor() - treperenje kurzora

[es] :: C/C++ programiranje :: SetCursor() - treperenje kurzora

[ Pregleda: 2814 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
195.252.80.*

Sajt: www.mycity.rs


+1 Profil

icon SetCursor() - treperenje kurzora11.01.2004. u 17:25 - pre 247 meseci
Imam iritirajuci problem sa WinAPI funkcijom SetCursor().

Na pocetku ucitam kurzor:
hCursor1 = LoadCursor (hInst, MAKEINTRESOURCE(CURSOR_ID1));

i, dok se mis pomera, pozivam:
SetCursor (hCursor1);


Medjutim, problem je sto Windows pri svakom pomeranju misa, vrati standardni kurzor (stelica), pa onda moj sors ponovo vrati moj kurzor, i tako kurzor treperi :(
Zapravo, kao da Windows ima neki clock, pa ako ne set-ujes kurzor dovoljno brzo - on vrati standardni kurzor.
Na brzim kompjuterima jedva da se vidi da treperi - jer program stigne da set-uje kurzor pre nego sto Windows to uradi, ali na starim kompjuterima bas treperi :(

Da li je normalno to sto Windows vraca standardni kurzor?
U pitanju je FLTK aplikacija, i moguce je da FLTK vraca standardni kurzor, ali ovo nisam siguran, ne verujem da je FLTK krivac, mada, sve je moguce...

U Win32-SDK sam nasao ovo:
If your application must set the cursor while it is in a window, make sure the class cursor for the specified window's class is set to NULL. If the class cursor is not NULL, the system restores the class cursor each time the mouse is moved.

Sta je cursor class?
HCURSOR hCursor1 ?

Sta je window's class?
hInstance?

ako stavim NULL umesto hInst:
hCursor1 = LoadCursor (NULL, MAKEINTRESOURCE(CURSOR_ID1));
kurzor se uopste ne ucita, nema ga...


Mozda ja na pogresan nacin set-ujem kurzor.
Sta radi funkcija ShowCursor? Tamo se pominju neki counteri...
Probao sam i sa tom funkcijom (mada je moguce da sam je probao na pogresan nacin) - nista se nije promenilo.

Gledao sam FLTK sors, i FLTK koristi samo LoadCursor i SetCursor, na isti nacin na koji ga ja koristim.
Cak sta vise - i kada koristim FLTK-ovu funkciju - kurzor isto hoce da zatreperi.

Problem me izludjuje danima, kopam po dokumentaciji, sorsevima, isprobavam svasta... bezuspesno.
Stvarno me stisla muka, nemam vise vreme za ovo, poslodavac ce me bije jos malo :)
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon Re: SetCursor() - treperenje kurzora11.01.2004. u 18:08 - pre 247 meseci
Citat:
If your application must set the cursor while it is in a window, make sure the class cursor for the specified window's class is set to NULL. If the class cursor is not NULL, the system restores the class cursor each time the mouse is moved.


Pri registrovanju klase prozora treba navesti handle za kursor koji ce aplikacija da koristi. Treba na tom mestu postaviti NULL, tako da posle mozes slobodno da menjas kursor, bez pokusaja win da vrati stari.
Mozda je jos bolje da odmah tu stavis handle na svoj kursor koji ces koristiti.
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
195.252.80.*

Sajt: www.mycity.rs


+1 Profil

icon Re: SetCursor() - treperenje kurzora11.01.2004. u 19:52 - pre 247 meseci
Code:

((WNDCLASS *)(window->xclass()))->hCursor = hCursor1;

ili NULL, kako vam vise odgovara.

vidi se da je setovao moj kurzor za default (dakle - radi)

e, sada je program poceo da puca, bilo sta da uradim.
isto i kad stavim hCursor = NULL.

imao li je neko slican problem?
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
*.beg.sezampro.yu

Sajt: www.mycity.rs


+1 Profil

icon Re: SetCursor() - treperenje kurzora12.01.2004. u 02:28 - pre 247 meseci
izmenio sam FLTK sors, stavio sam tamo hCursor=0, i rekompajlirao...
nisam nasao drugo resenje...
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.yu



+64 Profil

icon Re: SetCursor() - treperenje kurzora12.01.2004. u 08:46 - pre 247 meseci
Koja je standardna procedura za registrovanje prozora u FLTK?
Ako koristis nesto u fazonu :
Code:

WNDCLASS wc; // :)
..
wc.hCursor = LoadCursor(NULL, MAKEINTRESOURCE(IDC_...));
...
RegisterClass(&wc);

onda prosto na tom mestu stavis handle za kursor koji ces koristiti, ili NULL ako ces kasnije sam setovati kursor.
 
Odgovor na temu

Predrag Damnjanovic
Predrag Damnjanovic
Nis, Srbija

Član broj: 141
Poruke: 1305
195.252.80.*

Sajt: www.mycity.rs


+1 Profil

icon Re: SetCursor() - treperenje kurzora13.01.2004. u 11:02 - pre 246 meseci
to sam i uradio, ali u sors-u FLTK-a, pa posle rekompajlirao FLTK - i radi to lepo.

ali, ako probam da iz mog programa izvucem pointer na wc, i da stavim hCursor - program puca kada kliknem negde (a vidi se da je set-ovan moj kurzor).
Vrag ce ga znati zasto puca...

nebitno... vazno da radi kad izmenim FLTK sors...
 
Odgovor na temu

[es] :: C/C++ programiranje :: SetCursor() - treperenje kurzora

[ Pregleda: 2814 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.