привет, я пытаюсь использовать функцию таймера в программе c в окнах. мой код, как показано нижеФункция setwaitedtimer не вызывает функцию обратного вызова в c
#define _WIN32_WINNT 0x0400
#define WT_EXECUTEINTIMERTHREAD 0x00000020
#include<stdio.h
#include<windows.h>
typedef void (*callbackfunction)();
void timerfunction(callbackfunction cb);
void callback()
{
SYSTEMTIME time;
int millis;
int seconds;
GetSystemTime(&time);
millis =time.wMilliseconds;
seconds=time.wSecond;
printf("\n\ninside callback second=%d, milli=%d\n\n",seconds,millis);
}
void timerfunction(callbackfunction cb)
{
HWND hwndTimer=NULL;
HANDLE hnd;
PHANDLE h_buffer=(PHANDLE)malloc(sizeof(PHANDLE));
int a;
int qwDueTime;
UINT_PTR nIDEvent=1;
MSG msg; // message structure
LARGE_INTEGER liDueTime;
liDueTime.QuadPart=-100000000;
a=10;
nIDEvent=nIDEvent+1;
hnd = CreateWaitableTimer(
0,
FALSE,
0);
qwDueTime = -5*1000;
liDueTime.LowPart = (DWORD) (qwDueTime & 0xFFFFFFFF);
liDueTime.HighPart = (LONG) (qwDueTime >> 32);
SetWaitableTimer(hnd,&liDueTime,20,(PTIMERAPCROUTINE)cb,(LPVOID)a,TRUE);
// WaitForSingleObject(hnd,20);
// Wait for the timer.
}
void main()
{
callbackfunction cb= callback;
int a;
a=10;
timerfunction(cb);
Sleep(1000000);
}
функция таймера не вызывает функцию обратного вызова , пожалуйста, помогите. Я работаю над окнами
Я использовал SetTimer() api, но время было больше, чем указано. Я делаю это для аудио, поэтому я хочу, чтобы точность времени составляла один миллисекунд. он переходит к функции таймера, но функция обратного вызова не запускается. путь я использую это правильно или я должен нужно использовать АНИ WaitForSingleObject
спасибо, что это была ошибка, которую я сделал. теперь его работа. – Dev