Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Shell_NotifyIcon i menu stworzone za pomoca API
andrey
Łódź



Typ: neutral
Postów: 295
Zarejestrowany: Mar 2003
Shell_NotifyIcon i menu stworzone za pomoca API

Witam,
Tak jak w temacie Uzywam Shell_NotifyIcon aby sprowadzic program do zasobnika systemowego i chciałbym aby po kliknięciu prawym przyciskiem myszy wyswietlalo sie podreczne menu mojego programu.

Zwyczajny sposob to stworzenie w MenuEdytorze VB jakiegos menu (powiedzmy o nazwie mnuPopTray) a potem w miejscu gdzie wywoływane sa instrukcje po nacisnieciu prawym klawiszem ikony w zasobniku dac np.: Form1.PopupMenu mnuPopTray

Ja z kolei mam menu stworzone za pomoca API CreatePopupMenu i chciałbym wyswietlic je po prawokliku na ikone w tray-u

W kodzie formy mam:
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, Y As Single)
  If Button = 2 Then
    GetCursorPos p
    rez = TrackPopupMenuEx(hMenu, TPM_LEFTALIGN Or TPM_RETURNCMD Or TPM_RIGHTBUTTON, p.x, p.Y, Me.hwnd, ByVal 0&
    Call kpoMenu(rez)
  Else
    Print "Nacisnales lewy przycisk"
  End If
End Sub
i tak wyswietlam owe menu po kliknieciu na forme prawym przyciskiem myszy

Jak wykonac to samo z ikona w tray-u?

Probowalem sie bawic z wyciaganiem GetCursorPos i TrackPopupMenuEx ale w najlepszym przypadku menu pojawiało sie dopiero po drugim prawokliku na ikone w trayu?
Moze juz mieliscie taki problem?
Z góry dziękuję za odpowiedź i czas poświęcony na jej udzielenie
Pozdrawiam
Andrzej


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

01-09-2004 13:26
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
Usercontrol
mr. Tom



Typ: neutral
Postów: 191
Zarejestrowany: Oct 2003

Zobacz na inny temat : http://board.freeweb.pl/posts.php?board_id=1543&topic_id=68270&division=615

01-09-2004 21:04
Pokaż profil Usercontrol  Wyślij email do Usercontrol   Odwiedź stronę Usercontrol       1518548
andrey
Łódź



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

Witam,
Nie wiem UserControl w jaki sposob ma mi pomoc link do dyskusji w ktorej sam brałem udział, chcę ci zauważyć ze nie mam problemu ze stworzeniem ikony w tray-u ani wyswietlaniem menu takiego jakie podał hicks w przykładzie Ale to wcale nie rozwiazuje mojego problemu.
Ja nie chce tworzyc menu w menuedytorze VB tylko uzyc tego co stworzyłem za pomoca API do ktorego mam uchwyt
Pozdrawiam
Andrzej


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

01-09-2004 23:06
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
andrey
Łódź



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

Witam,
Nie lubie niedokończonych postów więc opiszę w jaki sposob rozwiązałem swój problem. Wystarczyło przyjrzeć sie wartością jakie miała zmienna Msg

' sprawdzam czy kliknieto ikone w traju
Private Sub picTrayHook_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)
    Msg = x / Screen.TwipsPerPixelX
   
    If Msg = 513 Or Msg = 514 Then
      If Msg = 513 Then FrmPopupMenu.Print "WM_LBUTTONDOWN" 'nie chcemy by napis pojawiał sie 2X
     
    ElseIf Msg = 516 Or Msg = 517 Then
       
        GetCursorPos p
        rez = TrackPopupMenuEx(hMenu, TPM_LEFTALIGN Or TPM_RETURNCMD Or TPM_RIGHTBUTTON, p.x, p.Y, Me.hwnd, ByVal 0&
        Call kpoMenu(rez)
    End If
End Sub


Pomysł narodził sie po dzisiajeszej rozmowie z hicksem przypomniał mi że mogłbym sledzic wartosci zmiennych uzywajac DEbug.Print
Tak tez zrobiłem
I co sie dowiedziałem po samym najechaniu kursorem myszy na ikone w tray-u wartosc Msg = 512 czyli WM_LBUTTONDOWN a dopiero jak klikamy lewym przyciskiem to Msg = 513 co dziwniejsze ma tez wartosc 514 Okno Debug wyswietla te wartosci jedna po drugiej ma to jednak zwiazek z poruszaniem sie myszy przynajmniej tak sadze a prawy klawisz myszy to Msg = 516 i Msg = 517 gdy juz znamy te wartosci wyswietlenie naszego menu jest juz proste jak słońce

Jedna rzecz może kogoś zainteresuje gdy usuniemy czesc kodu odpowiedzialnego za sprawdzanie ktory klawisz kliknieto menu bedzie pojawiac sie bezposrednio po najechaniu wskaznikiem myszy na ikone w tray-u

Private Sub picTrayHook_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)
      Msg = x / Screen.TwipsPerPixelX
     
        GetCursorPos p
        rez = TrackPopupMenuEx(hMenu, TPM_LEFTALIGN Or TPM_RETURNCMD Or TPM_RIGHTBUTTON, p.x, p.Y, Me.hwnd, ByVal 0&
        Call kpoMenu(rez)
End Sub

Pozdrawiam
Andrzej

[Post edytowany dnia 17-09-2004 09:34 przez andrey]


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

11-09-2004 15:06
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1