Il codice qui sotto semplicemente esegue una stampa in una picture box e sposta un controllo. Il tutto avviene con il timer multimediale cioè ad intervalli di tempo regolari stampa e sposta. Ora il problema è : nell'IDE di VB6 tutto OK ma compilando l'eseguibile PATATRACK..non c'è verso. Se qualcuno ha voglia di provare il codice sia nell'ide (di VB6) sia compilato e mi facesse sapere gli sarei grato.
CODICE DA INSERIRE IN UN MODULO:
************************************************** ****
codice:
Declare Function timeBeginPeriod& Lib "winmm.dll" (ByVal uPeriod&)
Declare Function timeEndPeriod& Lib "winmm.dll" (ByVal uPeriod&)
Declare Function timeGetDevCaps& Lib "winmm.dll" (lpTimeCaps As TIMECAPS, ByVal uSize&)
Declare Function timeKillEvent& Lib "winmm.dll" (ByVal uId&)
Declare Function timeSetEvent& Lib "winmm.dll" (ByVal uDelay&, ByVal uResolution&, ByVal lpFunction&, ByVal dwUser&, ByVal uFlags&)
Public TimerIDdet As Long 'id del timer
Public NewTempoSec As Long 'ogni quanto si attiva (in ms)
Public BestResolution As Long 'capacità del timer multimediale del sistema
Type TIMECAPS
wPeriodMin As Long
wPeriodMax As Long
End Type
Public Sub dettatoProc(ByVal uId&, ByVal uMsg&, ByVal dwUser&, ByVal dw1&, ByVal dw2&)
'il timer chia,ma questa funzione ogni volta che si attiva(ogni NewTempoSec ms)
Form1.Command2.Left = Form1.Command2.Left + 100
Form1.Picture1.Print "a"
End Sub
Public Function HighResTimer() As Boolean
Dim Rv As Long
Dim TC As TIMECAPS
' Get The Capabilities Of A Multi Media Timer.
Rv = timeGetDevCaps(TC, Len(TC))
' Find The Best Resolution Available. (Most Likely One Millisecond).
BestResolution = TC.wPeriodMin
' Set That Resolution.
' Note: Every "timeBeginPeriod" Must Be Followed (Somewhere In The Code) By a "timeEndPeriod".
Rv = timeBeginPeriod(BestResolution)
End Function
************************************************** *******************
Poi in un form inserire una picture box , due command button e inserire il seguente codice:
************************************************** ******************
codice:
Private Sub Command1_Click()
'imposta ogni quanto si attiva il timer (millisecondi)
NewTempoSec = 300
'fa partire il timer
TimerIDdet = timeSetEvent(NewTempoSec, BestResolution, AddressOf dettatoProc, 0, 1)
End Sub
Private Sub Form_Load()
'recupera la capacità del timer multimediale
HighResTimer
End Sub
Private Sub Form_Unload(Cancel As Integer)
'spegne il timer
timeKillEvent TimerIDdet
timeEndPeriod (BestResolution)
End Sub
************************************************** ***************
Premendo sul command1 il timer parte e il command2 si sposta mentre nella picture box viene stampata una a. Bene nell'eseguibile non funziona !!!!!!!!!!! secondo me è un bug
AH! in VB.NET tutto è OK e se qualcuno potesse compilarlo con VB5 e farmi sapere..