Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Ustalanie klikniętej pozycji menu
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003
Ustalanie klikniętej pozycji menu

Korzystam z API by stworzyć Popup menu. Potrzebuję teraz dowiedzieć się która pozycja na tym menu została kliknięta. Doskonale wiem ze do sprawdzenia pozycji kurosra potrzebuje GetCursorPos a do określenia przestrzeni w menu która można kliknąć użyje GetMenuItemRect ale mój problem jest nastepujący gdzie umieścić kod sprawdzający który element menu został kliknięty? GetMenuItemRect określa tylko przestrzeń nie mówi mi który element został kilknięty podejrzewam ze należy użyć jakieś kombinacji z GetMenuItemInfo ale czekam na wasze pomysły


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

24-04-2004 00:00
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003

Nikt nie odpowiada na to pytanie wiec ja na nie odpowiem. Aby określić która pozycje takiego nowo utworzonego menu kliknal uzytkownik potzrebujemy funkcji TrackPopupMenuEx. Najlepiej dam kawałek kodu który sami sobie rozgryziecie.
' Kod modułu :
'################### Stałe ####################################
Public Const MF_CHECKED = &H8&
Public Const MF_APPEND = &H100&
Public Const MF_DISABLED = &H2&
Public Const MF_GRAYED = &H1&
Public Const MF_SEPARATOR = &H800&
Public Const MF_STRING = &H0&
Public Const TPM_LEFTALIGN = &H0&
Public Const TPM_RETURNCMD = &H100&
Public Const TPM_RIGHTBUTTON = &H2&

'###################### Typy ##################################
Public Type POINTAPI
    x As Long
    y As Long
End Type

'################### API  do wyświetlenia popupmenu ###########
Public Declare Function CreatePopupMenu Lib "user32" () As Long
Public Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
Public Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Function TrackPopupMenuEx Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal HWnd As Long, ByVal lptpm As Any) As Long

'################### Zmienne ##################################
Public hMenu As Long
Public rez As Long ' rezultat czyli numer naszego wybranego menu
Sub pMenu()
    hMenu = CreatePopupMenu()
    AppendMenu hMenu, MF_STRING, 1, "Pokaż"
    AppendMenu hMenu, MF_SEPARATOR, 2, ByVal 0&
    AppendMenu hMenu, MF_STRING, 3, "Zwolnij 30%"
    AppendMenu hMenu, MF_STRING, 4, "Zwolnij ..."
    AppendMenu hMenu, MF_SEPARATOR, 5, ByVal 0&
    AppendMenu hMenu, MF_STRING, 6, "Wyłącz"
    AppendMenu hMenu, MF_SEPARATOR, 7, ByVal 0&
    AppendMenu hMenu, MF_STRING, 8, "Alarm"
    AppendMenu hMenu, MF_SEPARATOR, 9, ByVal 0&
    AppendMenu hMenu, MF_CHECKED, 10, "X - chowa"
    AppendMenu hMenu, MF_SEPARATOR, 11, ByVal 0&
    AppendMenu hMenu, MF_STRING, 12, "Pomoc"
    AppendMenu hMenu, MF_STRING, 13, "O programie"
    AppendMenu hMenu, MF_SEPARATOR, 14, ByVal 0&
    AppendMenu hMenu, MF_STRING, 15, "Zakończ"
End Sub
' Kod formy:
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim p As POINTAPI  ' punkt na ekranie
    Call pMenu        ' tworzymy sobie w locie nowe menu
    GetCursorPos p    ' sprawdzamy gdzie jest kursor
    rez = TrackPopupMenuEx(hMenu, TPM_LEFTALIGN Or TPM_RETURNCMD Or TPM_RIGHTBUTTON, p.x, p.y, Me.HWnd, ByVal 0&
    DestroyMenu hMenu  ' niszczymy menu
    Print rez          ' wyswietlamy nasza pozycje kliknieta
End Sub
Wszystko zależy jaki parametry damy funkcji TrackPopupMenuEx Troche nad ty siedzialem ale wkońcu zaczelo dzialac az ktos mi powiedzial zeby wszedl na www.allapi.net i tam byl przyklad ehh ale zawsze czlowiek dumny jest jak sam cos splodzi


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

25-04-2004 16:56
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
Wszystkich odpowiedzi: 1 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1