Miten ohjelman saa välkkyyn kun se on pienennetty tonne alas kun jotain tapahtuu? Sillei ku mesessäki jos tulee uus viesti ni se alkaa välkkyyn
Private Declare Function FlashWindow Lib "user32" (ByVal hwnd As Long, ByVal bInvert As Long) As Long Private Sub Form_Load() a& = FlashWindow(Me.hwnd, 1) 'tämä välkyttää End Sub
Kokeile pistää tuo välkytys vaikka johonkin Timeriin puolen sekunnin välein.
Toimi ku koitin tehä ohjelman joka tekee vaan tota, mutta sitten ku yritin änkee sitä mun ohjelmaan ni se valittaa
a& =
tosta kohasta: "Variable not defined".
Nannohiiri kirjoitti:
"Variable not defined".
Määrittele se. Vihje: Dim-lause.
Miksei se tossa pelkässä välkkymisohjelmassa valittanu???
No kai muistit ottaa tuon ekan rivin mukaan? Se pitää olla, koska siinä määritellään tuo FlashWindow, että sitä voi käyttää.
Edit: Yksi kysymysmerkki per kysymys muuten riittää ihan hyvin.
No laitapa vaikka että
Dim a As Integer
Edit: Taas unohtui refresh :)
Ja ehkäpä tässä ohjelmassasi on se jokin määrittely, että kaikki muuttujat pitää määritellä Dim-lauseella.
Metabolix: & on Double, tuossa ei varmaan Interger käy, mutta veikaan, ettei ongelma ole siinä, että muuttuja pitäisi määritellä (paitsi jos siinä tosiaan on Option Explicit).
vaihdoin sen a& välky:KS ja dim välky as integer toimiii
Kyllä minulla vain toimii tuo välky-nimelläkin eikä tarvitse mitään Dim-määrittelyä.
Private Declare Function FlashWindow - - As Long
Tuon perusteella sanoisin, että kyllä sen kannattaa olla Long eikä Double, ja jos kyseessä on VB6.0 tai vanhempi, tuo Long on kooltaan sama kuin Integer. Sitä paitsi, C++:n puolella tuon funktion palautusarvo on BOOL (kyllä, isolla kirjoitettuna), jota siis käytännössä käytetään Booleanina (bool), vaikka se onkin 32-bittinen.
Metabolix kirjoitti:
jos kyseessä on VB6.0 tai vanhempi, tuo Long on kooltaan sama kuin Integer
Tämä kaipaa minusta vähän selvennystä: VB6:n Integer on siis 16 bittiä ja Long 32, missä .NETin integer on tuon 32 bittiä ja Long on 64. .NET:ssä on lisäksi "short", joka on sitten tuon 16 bittiä.
Niin, tuo & on siis tosiaan Long, sanoin vahingossa tossa Double.
Niin, tarkoitin siis että vanha Long on kooltaan uusi Integer ja että tuon funktion palautusarvo on kooltaan vanha Long eli uusi Integer.
Mulla ainaskin välkkyy ohjelma alhaalla, jos siellä tapahtuu jokin muutos (esim textboxiin). En tiedä miten normisti, mutta kyseessä oli xätti-ohjelma ja kun vastaanotin viestin, sekä ohjelmani oli alhaalla, niin se välkkyi (kuin messenger).
Mutta tuo on uutta, tuo koodivinkki, jonka hunajavohveli esitteli, alussa jo. :)
Onko joku kokeillut käyttää FLASHWINDOWEXää? VB.NET:llä yritin saada välkkymistä toimimaan, mutta ei tullut monista yrityksistä huolimatta mitään. Pelkkä FLASHWINDOW kyllä toimii, mutta toi EX olis käyttökelpoisempi kaikkine määrityksineen.
Onko seuraavassa mitään näkyvää virhettä?
Public Const FLASHW_STOP = 0 Public Const FLASHW_CAPTION = &H1 Public Const FLASHW_TRAY = &H2 Public Const FLASHW_ALL = (FLASHW_CAPTION Or FLASHW_TRAY) Public Const FLASHW_TIMER = &H4 Public Const FLASHW_TIMERNOFG = &HC Public Declare Function FlashWindowEx Lib "user32" (ByVal FWInfo As FLASHWINFO) As Boolean Public Structure FLASHWINFO Dim cdSize As Int32 Dim handle As Int32 Dim dwFlags As Int32 Dim uCount As Int32 Dim dwTimeout As Int32 End Structure 'button_click.... Dim FWInfo As FLASHWINFO With FWInfo .cdSize = Len(FWInfo) .handle = Me.Handle.ToInt32 .dwFlags = FLASHW_ALL And FLASHW_TIMER .uCount = 0 .dwTimeout = 0 End With FlashWindowEx(FWInfo)
Arttut02 kirjoitti:
.dwFlags = FLASHW_ALL And FLASHW_TIMER
Flagit liitetään Or:lla, ei Andilla. Tuntuu hassulta, mutta kyseessähän ovat tällä kertaa bittioperaatiot, ei loogiset operandit.
Aihe on jo aika vanha, joten et voi enää vastata siihen.