难道可以sendmessage:WM_TIMER?
在 SetTimer中hwnd参数是NULL啊,不解中……
在 SetTimer中hwnd参数是NULL啊,不解中……
解决方案 »
- 新手提问:如何将CTabCtrl中的sheet标签放在左侧竖直一列
- 网络编程高手请帮助
- 钩子安装失败..?
- WM_NcDESTROY的Nc是那个单词的缩写啊?
- 求助:MFC下用socket API编写UDP通信程序
- 如何限制程序只能安装一次、且只能安装到一台机器上,并且若干天后过期?
- 工具栏的动态提示
- 100分请教高手:TryEnterCriticalSection在98下不支持,有无替代的函数?
- 怎样创建透明画刷?
- ★★★快来抢300分★★★:我照书做一个控件,为何总提示:error C2084: UpdateRegistry(int)' already has a body?
- 如何用VC编一个定时关机程序
- 关于 Enternal Dependencies 文件夹
初步想法是用一个线程来标记时间,或者用CALLBACK实现调用??
那位给个具体的实现方法吧
The following example creates a timer that will be signaled after a 10 second delay. First, the code uses the CreateWaitableTimer function to create a waitable timer object. Then it uses the SetWaitableTimer function to set the timer. The code uses the WaitForSingleObject function to determine when the timer has been signaled. #include <windows.h>
#include <stdio.h>int main()
{
HANDLE hTimer = NULL;
LARGE_INTEGER liDueTime; liDueTime.QuadPart=-100000000; // Create a waitable timer.
hTimer = CreateWaitableTimer(NULL, TRUE, "WaitableTimer");
if (!hTimer)
{
printf("CreateWaitableTimer failed (%d)\n", GetLastError());
return 1;
} printf("Waiting for 10 seconds...\n"); // Set a timer to wait for 10 seconds.
if (!SetWaitableTimer(
hTimer, &liDueTime, 0, NULL, NULL, 0))
{
printf("SetWaitableTimer failed (%d)\n", GetLastError());
return 2;
} // Wait for the timer. if (WaitForSingleObject(hTimer, INFINITE) != WAIT_OBJECT_0)
printf("WaitForSingleObject failed (%d)\n", GetLastError());
else printf("Timer was signaled.\n"); return 0;
}
For more information on the timer routine, see WaitOrTimerCallback.#include <windows.h>
#include <stdio.h>HANDLE gDoneEvent;VOID CALLBACK TimerRoutine(PVOID lpParam, BOOL TimerOrWaitFired)
{
if (lpParam == NULL)
{
printf("TimerRoutine lpParam is NULL\n");
}
else
{
// lpParam points to the argument; in this case it is an int printf("Timer routine called. Parameter is %d.\n",
*(int*)lpParam);
} SetEvent(gDoneEvent);
}int main()
{
HANDLE hTimer = NULL;
HANDLE hTimerQueue = NULL;
int arg = 123; // Use an event object to track the TimerRoutine execution
gDoneEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if (!gDoneEvent)
{
printf("CreateEvent failed (%d)\n", GetLastError());
return 1;
} // Create the timer queue.
hTimerQueue = CreateTimerQueue();
if (!hTimerQueue)
{
printf("CreateTimerQueue failed (%d)\n", GetLastError());
return 2;
} // Set a timer to call the timer routine in 10 seconds.
if (!CreateTimerQueueTimer(
&hTimer, hTimerQueue, TimerRoutine, &arg , 10000, 0, 0))
{
printf("CreateTimerQueueTimer failed (%d)\n", GetLastError());
return 3;
} // TODO: Do other useful work here printf("Call timer routine in 10 seconds...\n"); // Wait for the timer-queue thread to complete using an event
// object. The thread will signal the event at that time. if (WaitForSingleObject(gDoneEvent, INFINITE) != WAIT_OBJECT_0)
printf("WaitForSingleObject failed (%d)\n", GetLastError()); // Delete all timers in the timer queue.
if (!DeleteTimerQueue(hTimerQueue))
printf("DeleteTimerQueue failed (%d)\n", GetLastError()); return 0;
}