Jak wyświetlić context menu w pozycji (x,y) ekranu?

0

Witam [!!!]

Bezkutecznie jak do tej pory poszukuję sposoby na to, aby przy uzyciu funkcji winapi wyświetlić context menu na pozycji (x,y), czyli to menu, które rozwija się po naciśnięciu prawego przycisku myszki. Czy da się coś takiego zrobić dla dowolnej pozycji pulpitu, czy wyłącznie dla obszaru aktywnego okna programu, który by taka funkcję uruchamiał?? Dodam jeszcze, że funkcję taką chcę umieścić w bibliotece dll, która z kolei wykorzstuję przy użyciu JNI - mam nadzieję, że nie narzuca to dodatkowych ograniczeń.

Z góry dziękuję za pomoc.

0

Aby przekształcić współrzędne z okna na te z ekranu użyj funkcji
BOOL ClientToScreen(
HWND hWnd, LPPOINT lpPoint);

A później wywołaj funkcjię
BOOL TrackPopupMenu(

HMENU hMenu,
UINT uFlags,
int x,
int y,
int nReserved,
HWND hWnd,
HWND prcRect

);

z ze zmienionymi parametrami x y

0

A co to ma do rzeczy?

MSDN:
x
[in] Specifies the horizontal location of the shortcut menu, in screen coordinates.
y
[in] Specifies the vertical location of the shortcut menu, in screen coordinates.

0

Dziękuję bardzo za pomoc!! [soczek]

0

Witam [!!!]
Chciałem jeszcze zapytać o jedną rzecz. Jednym z argumentów funckcji TrackPopupMenu(...) jest HWND hWnd czyli jak rozumiem uchwyt do okna. Czy można wywołać ta funkcję na rzecz np. pulpitu?? Jeśli tak, to jak to się robi...
Dlaczego tak kombinuję: Chcę w bibliotece dll umieścić funkcję którą będę wywoływał za pomocą klas javy korzystających z technologi JNI, więc dla takiej funkcji umieszczonej w pliku dll:

JNIEXPORT void JNICALL Java_TinyWinApi_showContextMenu(JNIEnv *env,  jobject obj, jint x, jint y){

   TrackPopupMenu(   CreatePopupMenu(),
                     TPM_RIGHTBUTTON,
                     x,
                     y,
                     0,
                     ??????????????, //a tu co??
                     NULL);

};

nie wiem jak wyłuskać uchwyt do okan.

0

Na pewno czytales dokumentacje?
W tym linku co podalem jest wszystko opisane.

hWnd
[in] Handle to the window that owns the shortcut menu. This window receives all messages from the menu. The window does not receive a WM_COMMAND message from the menu until the function returns.

hWnd to uchwyt okna, ktore bedzie otrzymywac komunikaty po zakonczeniu funkcji.

Uchwyt jakiego okna chcesz pobrac?

0

tak...
Moja aplikacja(napisana za pomocą java'y) posiadająca okno w pewnym momencie wywołuje metodę showContextMenu(...)(zaimplementowaną przy użyciu JNI). Metoda ta(umieszczona w .DLL) korzystając z funkcji winapi ma wyświetlić menu kontekstowe dla tego okienka(które wywołało ta funkcję) w zadanym punkcie.

0

No to przekaz tylko uchwyt do tego okna (jakkolwiek sie to w javie robi) i obsluz zwrocone komunikaty.

1 użytkowników online, w tym zalogowanych: 0, gości: 1