2013-07-25 3 views
-4
Option Explicit 
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long 

Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long  

Function TimerCreate() As Boolean 

    If g_CTimer Is Nothing Then Exit Function 

    ' Create the timer 
    g_CTimer.TimerID = SetTimer(0&, 0&, g_CTimer.Interval, AddressOf TimerProc) 
    If g_CTimer.TimerID Then 
     TimerCreate = True 
    Else 
     TimerCreate = False 
     g_CTimer.TimerID = 0 
    End If 
End Function 

Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long) 
    On Error Resume Next 

    If g_CTimer Is Nothing Then Exit Sub 
    g_CTimer.ThatTime 
End Sub 
+1

Вам действительно нужно задать вопрос. Есть ли что-то, в чем вы испытываете проблемы? Кажется, что за несколько минут вы получите около 95% конверсии. Тогда вы можете задать * конкретный вопрос о том, с чем вы столкнулись. –

+0

У меня возникают проблемы при записи ниже строки на C# с правильными параметрами и типом данных: 'g_CTimer.TimerID = SetTimer (0 &, 0 &, g_CTimer.Interval, AddressOf TimerProc)' – apratik

+1

Вам не нужно ни одного из них на C#, потому что в .Net есть несколько «Timer» и подобных классов, которые уже делают то, что вы здесь делаете. Я имею в виду, что миграция «VB6 -> C#» - это не просто перевод кода. Вам нужно полностью переписать, используя классы .Net и философию ООП. –

ответ

1

Для таймера, вы, вероятно, хотите:

System.Threading.Timer myTimer = 
    new System.Threading.Timer(TimerProc, null, g_CTimer.Interval, g_CTimer.Interval); 

См System.Threading.Timer.

Если вам действительно нужно использовать мультимедийные таймеры (я бы не рекомендовал его), я бы посоветовал вам прочитать Windows Timers и проверить pinvoke.net на управляемые прототипы. Например, SetTimer.

Смежные вопросы