Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: MDIFormin lostfocus?

sooda [18.11.2003 15:05:05]

#

Miksei MDIFormeissa ole lostfocusia? miten saisi tehtyä sellaisen että kun mdiform "lostaa focusin" niin sitten tapahtuu jotain? siis kun ensin mdiform on actiivisena ja sitten painaa vaikka alt+tab tai klikkaa hiirellä selainta...?

Antti Laaksonen [18.11.2003 15:23:54]

#

Tämä on ehkä pahin viritelmä vähään aikaan, mutta tuntuisi toimivan. Laita formille Timer-kontrolli.

'funktio, joka palauttaa aktiivisen ikkunan hWnd:n
Private Declare Function GetActiveWindow Lib "user32" () As Long

Private Sub MDIForm_Load()
    'fokus katsastetaan 50 ms välein
    Timer1.Interval = 50
End Sub

Private Sub Timer1_Timer()
    'jos tila on 1, on ikkuna aktiivisena
    Static tila As Integer
    'jos aktiivinen ikkuna on eri kuin oma ikkuna...
    If GetActiveWindow <> Me.hwnd And tila Then
        '...näytetään ilmoitus...
        MsgBox "Nyt taidettiin mennä pois!"
        '...mutta vain kerran!
        tila = 0
    Else
        'ikkuna näyttää olevan aktiivisena
        tila = 1
    End If
End Sub

sooda [18.11.2003 15:30:12]

#

Hehee :D hyvin toimii kiitosta vaan. Mutta vain(heh) jos ottaa ton msgboxin pois muuten se tulee takaisin tohon ohjelmaan koska msgboxin "owner" (mikäsenytsuomeksolikaanenmuista) on toi ohjelma, eli kun painaa ok tohon nyt mentiin pois niin se tulee takaisin :) mutta ei ollut tarkoituskaan heittää msgboxeja vaan muuttaa vaan yhtä arvoa. Kiitokset.

Vastaus

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

Tietoa sivustosta