Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Systray vb

Jäynis [07.11.2005 22:51:19]

#

Elikkä olen käyttänyt tätä koodivinkkiä hyväkseni. Ongelma on sellainen että käsittääkseni kun hiiri tekee jotakin iconin päällä iconi kutsuu

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)

End Sub

subia antaen tapahtumatiedon X parametriin.
Mutta kun hiirtä liikuttaa formilla siihen kohtaa (esim.515)
joka vastaa jotain tapahtumakoodia koodi suoritetaan.
Noh, jospa soodi kertoisi enemmän kuin monta sanaa...

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    x = x / Screen.TwipsPerPixelX

    Select Case x
        Case WM_LBUTTONDBLCLK
            Me.Show
        Case WM_RBUTTONDOWN
            'Esim kun formilla liikutaan kohdan 516                päälle/ohi
            'ohjelma päättä että nyt on näytettävä PopupMenu!
            PopupMenu mSystrayMenu
    End Select

End Sub

Eli jos tule mitään yksinkertaista tapaa mieleen tunnistaa toi niin olkaa hyvä vain.

Edit:Tyypillistä, idea tulee vasta kun on viestin lähettänyt...
Eli hokasin että y on sitten varmaan aina nolla joten

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)

    If y = 0 Then
        x = x / Screen.TwipsPerPixelX
        Select Case x
            Case WM_LBUTTONDBLCLK
                Me.Show
            Case WM_RBUTTONDOWN
                'Esim kun formilla liikutaan kohdan 516 päälle/ohi
                'ohjelma päättä että nyt on näytettävä PopupMenu!
                PopupMenu mSystrayMenu
        End Select
    End If

End Sub

Ja tämä varmaan riittää tarkistukseksi, olisi kai aika epätodennäköistä että sattuisi osumaan tuohon kohtaan. Mutta jos jotain parempaa tulee mieleen niin antaa tulla

Merri [08.11.2005 02:11:46]

#

Voit myös linkittää näkymättömään pictureboksiin. Taikka tehdä tarvittavan ikkunan API:lla. Tähän löytyy esimerkkikoodi, tosin tällä hetkellä paikka josta sen saa näyttäisi olevan alhaalla, joten en voi tarjota linkkiä.

Jäynis [08.11.2005 14:18:33]

#

Kiitoksi, täytyy tesmata.
Seuraava pulmani ei varsinaisesti liity tuohon mutta liittyy kummiskin. Eli kun ylhäällä olevalla tavalla näytän PopUp menun niin kun ei ole muita ohjelmia auki tahi on ihan vaan työpöydällä ja ton menun avaa niin sitä ei saa pois muuta kuin klikkaamalla menua. Muut ohjelmien menut kyllä tajuaa lähtä kun klikkaa työpöytää mut tää vaan jää möllöttään. Vinkkejä?

Merri [08.11.2005 16:41:37]

#

Tässäpä se koodi: http://www.vbforums.com/showthread.php?s=&threadid=300765

Mahdollistaa myös animoinnin. En tiedä onko siitä korjattu tuota valikkojuttua, mutta kokeilemallahan se selviää :)

Jäynis [08.11.2005 17:38:25]

#

Juu, tossa valikko toimii niinku pitääkin. Eiköhän tosta ratkasu löydy, kiitoksia taas Merri

Edit: En ehtinyt tutkia tuota koodia kun innostuin tutkimaan foorumia samaisen linkin takana. Sieltä sitten löytyi kuin löytyikin vastaus kun jollakulla oli ollut sama ongelma.

Tässä soodi jolla sain tomiin

Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Long) As Long

Private Sub pIconi_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
SetForegroundWindow Me.hwnd  'Tarvii vain tätä kutsua ja valikko toimii astetta paremmin
X = X / Screen.TwipsPerPixelX
Select Case X
    Case WM_LBUTTONDBLCLK
        Me.Show
    Case WM_RBUTTONDOWN
        PopupMenu mSystrayMenu
End Select
End Sub

Joten, kiitoksia taas Merri:) Enpä varmaan olisi tuonne eksyny ilman linkkiäs

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta