title image


Smiley Mache es genauso wie es Windows auch tut ...
Hi,



hier ist eine "echte" Waitroutine, die weder VB noch Windows ausbremst und sogar fast ein multithreading Feeling mitbringt.



Nimm:



Ein Modul

Eine Form

Auf die Form zwei Buttons



in die Form diesen Code:





Private Sub Command1_Click()

Wait 10000

MsgBox "OK Time over"

End Sub

'

Private Sub Command2_Click()

MsgBox "OK"

End Sub



ins Modul diesen Code:





Private Const WM_TIMER = &H113

'

Private Type POINTAPI

x As Long

y As Long

End Type

'

Private Type MSG

hwnd As Long

message As Long

wParam As Long

lParam As Long

time As Long

pt As POINTAPI

End Type

'

Private Declare Function GetMessage Lib "user32" Alias "GetMessageA" ( _

lpMsg As MSG, _

ByVal hwnd As Long, _

ByVal wMsgFilterMin As Long, _

ByVal wMsgFilterMax As Long) As Long

'

Private Declare Function TranslateMessage Lib "user32" ( _

lpMsg As MSG) As Long

'

Private Declare Function DispatchMessage Lib "user32" Alias "DispatchMessageA" ( _

lpMsg As MSG) As Long

'

Private Declare Function SetTimer Lib "user32" ( _

ByVal hwnd As Long, _

ByVal nIDEvent As Long, _

ByVal uElapse As Long, _

ByVal lpTimerFunc As Long) As Long

'

Private Declare Function KillTimer Lib "user32" ( _

ByVal hwnd As Long, _

ByVal nIDEvent As Long) As Long

'

Public Sub Wait(ByVal nInterval As Long)

Dim mT As MSG

Static hTimer



hTimer = SetTimer(0, 0, nInterval, ByVal 0)



Do While GetMessage(mT, ByVal 0, 0, 0)

If mT.message = WM_TIMER And _

mT.wParam = hTimer Then

Exit Do

End If

TranslateMessage mT

DispatchMessage mT

Loop



KillTimer 0, hTimer

hTimer = 0

End Sub



Es passiert genau folgendes:



Du startest das Prog. Drückst auf Button1 und die Wait - Routine wird für 10 Sekunden gestartet. Es passiert gar nichts, du kannst auf Button 2 drücken und es erscheint eine MsgBox. ABER: In genau 10 Sekunden erscheint eine zweite Msgbox! Die von Button 1.




Programmierst Du noch frei oder wirst Du schon von Microsoft verwaltet ( .NET)?



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: