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..
![]()

Rispondi quotando
