I normally just use a timer set to 1000 ms with a global (or module level) long counter called FPS.
Private FPS as Long
Main Code:
Code:
Do
'Main Loop code
....
FPS = FPS + 1 'increment the frame counter
Loop While Not bDone
Timer code:
Code:
Private Sub tmrFPS_Timer()
me.Caption = "FPS: " & FPS
FPS = 0
End Sub
It's simple, accurate, and gets the job done.