[ nenadus @ 18.09.2006. 00:57 ] @
Koristeci WINDOWS API napravio sam za svoju aplikaciju tzv status-area icon i floating-menu. Takodje, kada korisnik klikne na status-area icon, pomocu TrackPopupMenu 'startuje' se floating-menu. Problem je kako naciljati da se floating menu pojavi tacno na mestu gde treba! Za to su mi potrebne screen koordinate mouse-pointera u trenutku kada je korisnik 'kliknuo' na status-area icon.

Da li neko zna kako da resim ovaj problem?

Hvala,
Pozdrav
[ nikoladsp @ 19.09.2006. 07:02 ] @
ako pozivas TrackPopupMenu iz neke f-je tipa 'klik misa', imas koordinate mesta klika u samoj metodi...u zavisnosti od biblioteke koju koristis to je CPoint(MFC klasa) ili POINT (struktura,u recimo WTL). Mozes koristiti i ClientToScreen i ScreenToClient kao pripomoc i recimo GetWindowRect.
[ nenadus @ 19.09.2006. 18:25 ] @
Nikola,

> ako pozivas TrackPopupMenu iz neke f-je
> tipa 'klik misa', imas koordinate mesta
> klika u samoj metodi...

Koristio sam cist WINDOWS API. Attach-ovao
sam deo koda koji se odnosi na pravljenje
prozora, floating-menu-ja i njihovo opsluzivanje
pa se moze pogledati ...

Parent-window floating-menu-ja je neki vec
napravljeni prozor. Kada korisnik klikne
na neki klijentski deo prozora, mi lako
saznamo koordinate pointera (lParam argument
WindowProc procedure). Kada klikne na status
area-icon, svi parametri su vec 'potroseni'
na druge argumente ... Dakle, potrebno je da
rucno izracunam koord pointer-a.

Hvala,
Pozdrav
[ stargazer @ 20.09.2006. 00:09 ] @
Prema ovom kodu koji si stavio, ti uredno detektuješ klik miša na ikonu u trayu. Možeš da pozoveš GetCursorPos da dobiješ koordinate kursora.

Code:

if((UINT)lParam==WM_RBUTTONUP)
{
    POINT point;

    // initialize object >point<
    GetCursorPos(&point);
    TrackPopupMenu(floating_menu,TPM_RIGHTBUTTON,point.x,point.y,0,hwnd,NULL);
}
[ nenadus @ 20.09.2006. 17:57 ] @
> Možeš da pozoveš GetCursorPos da dobiješ koordinate kursora

To je to!

Hvala,
Pozdrav.