Fungsi SetTimer (winuser.h)
Membuat timer dengan nilai waktu habis yang ditentukan.
Sintaks
UINT_PTR SetTimer(
[in, optional] HWND hWnd,
[in] UINT_PTR nIDEvent,
[in] UINT uElapse,
[in, optional] TIMERPROC lpTimerFunc
);
Parameter
[in, optional] hWnd
Jenis: HWND
Handel ke jendela yang akan dikaitkan dengan timer. Jendela ini harus dimiliki oleh utas panggilan. Jika nilai NULL untuk hWnd diteruskan bersama dengan nIDEvent dari timer yang ada, timer tersebut akan diganti dengan cara yang sama seperti timer hWnd non-NULL yang ada.
[in] nIDEvent
Jenis: UINT_PTR
Pengidentifikasi timer bukan nol. Jika parameter hWndADALAH NULL, dan nIDEvent tidak cocok dengan timer yang ada maka diabaikan dan ID timer baru dihasilkan. Jika parameter hWnd bukan NULL dan jendela yang ditentukan oleh hWnd sudah memiliki timer dengan nilai nIDEvent, maka timer yang ada digantikan oleh timer baru. Saat SetTimer mengganti timer, timer diatur ulang. Oleh karena itu, pesan akan dikirim setelah nilai batas waktu saat ini berlalu, tetapi nilai waktu habis yang ditetapkan sebelumnya diabaikan. Jika panggilan tidak dimaksudkan untuk mengganti timer yang ada, nIDEvent harus 0 jika hWnd adalah NULL.
[in] uElapse
Jenis: UINT
Nilai waktu habis, dalam milidetik.
Jika uElapse kurang dari USER_TIMER_MINIMUM (0x0000000A), batas waktu diatur ke USER_TIMER_MINIMUM. Jika uElapse lebih besar dari USER_TIMER_MAXIMUM (0x7FFFFFFF), batas waktu diatur ke USER_TIMER_MAXIMUM.
[in, optional] lpTimerFunc
Jenis: TIMERPROC
Penunjuk ke fungsi yang akan diberi tahu ketika nilai waktu habis berlalu. Untuk informasi selengkapnya tentang fungsi ini, lihat TimerProc. Jika lpTimerFuncadalah NULL, sistem memposting pesan WM_TIMER ke antrean aplikasi. Anggota hwnd dari struktur MSG pesan berisi nilai parameter hWnd .
Nilai kembali
Jenis: UINT_PTR
Jika fungsi berhasil dan parameter hWnd adalah NULL, nilai yang dikembalikan adalah bilangan bulat yang mengidentifikasi timer baru. Aplikasi dapat meneruskan nilai ini ke fungsi KillTimer untuk menghancurkan timer.
Jika fungsi berhasil dan parameter hWnd bukan NULL, maka nilai yang dikembalikan adalah bilangan bulat bukan nol. Aplikasi dapat meneruskan nilai parameter nIDEvent ke fungsi KillTimer untuk menghancurkan timer.
Jika fungsi gagal membuat timer, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Aplikasi dapat memproses pesan WM_TIMER dengan menyertakan pernyataan kasus WM_TIMER dalam prosedur jendela atau dengan menentukan fungsi panggilan balik TimerProc saat membuat timer. Saat Anda menentukan fungsi panggilan balik TimerProc , DispatchMessage memanggil fungsi panggilan balik alih-alih memanggil prosedur jendela saat memproses WM_TIMER dengan lParam non-NULL. Oleh karena itu, Anda perlu mengirimkan pesan di utas panggilan, bahkan ketika Anda menggunakan TimerProc alih-alih memproses WM_TIMER.
Parameter wParam dari pesan WM_TIMER berisi nilai parameter nIDEvent .
Pengidentifikasi timer, nIDEvent, khusus untuk jendela terkait. Jendela lain dapat memiliki timer sendiri yang memiliki pengidentifikasi yang sama dengan timer yang dimiliki oleh jendela lain. Timernya berbeda.
SetTimer dapat menggunakan kembali ID timer dalam kasus di mana hWnd adalah NULL.
Sebelum menggunakan SetTimer atau fungsi terkait timer lainnya, disarankan untuk mengatur bendera UOI_TIMERPROC_EXCEPTION_SUPPRESSION ke false melalui fungsi SetUserObjectInformationW , jika tidak, aplikasi dapat berperilaku tidak terduga dan dapat rentan terhadap eksploitasi keamanan. Untuk informasi selengkapnya, lihat SetUserObjectInformationW.
Contoh
Misalnya, lihat Membuat Timer.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winuser.h (termasuk Windows.h) |
Pustaka | User32.lib |
DLL | User32.dll |
Set API | ext-ms-win-ntuser-window-l1-1-2 (diperkenalkan dalam Windows 10, versi 10.0.10240) |
Lihat juga
Konseptual
Referensi