我创建了一个线程,此线程内想周期调用一函数,而且必须向处理函数中传递线程内的一参数,SetTimer的函数原型是
UINT_PTR SetTimer(
HWND hWnd, // 窗口句柄
UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
UINT uElapse, // 时间间隔,单位为毫秒
TIMERPROC lpTimerFunc // 回调函数
);毁掉函数的参数类型是不是已经定死了,那我该如何向函数中传递自己的参数,希望大家多多赐教!
疑惑阿,焦急等待。
UINT_PTR SetTimer(
HWND hWnd, // 窗口句柄
UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
UINT uElapse, // 时间间隔,单位为毫秒
TIMERPROC lpTimerFunc // 回调函数
);毁掉函数的参数类型是不是已经定死了,那我该如何向函数中传递自己的参数,希望大家多多赐教!
疑惑阿,焦急等待。
解决方案 »
- 小小函数实现,来看看吧
- 如何将8个字节的整型数据转换成字符串
- MFC 输出字符串到主程序框(GetWindowTextLength出现问题)
- 在cobjectview类中新建成员变量,竟然没有CPoint类型
- 如何做个客户端程序,以对局域网内的服务器进行压力测试
- 在ATL做的Activex中,如何使用定时器?
- 求思路,急用,关于光标的网格吸附功能,谢谢
- VC高手请进!!!!!!!!!!
- 200分,求助几个网络编程的超级难题,在客户端正常或者不正常消失时,服务器端释放资源
- 新手,怎样做延时100微秒,求救.
- CSOCKET后,为什么是乱码?
- 真见鬼,在CDialog中用GetwindowsRect()怎么不行啊????
#include <windows.h>
#define WM_MYMESSAGE WM_USER+1DWORD WINAPI ThreadFun(LPVOID wParam);int main(int argc, char* argv[])
{
HANDLE hThread=CreateThread(NULL,0,ThreadFun,NULL,0,NULL);
WaitForSingleObject(hThread,INFINITE);
return 0;
}
VOID CALLBACK TimerProc(
HWND hwnd, // handle to window
UINT uMsg, // WM_TIMER message
UINT idEvent, // timer identifier
DWORD dwTime // current system time
)
{
PostThreadMessage(GetCurrentThreadId(),WM_MYMESSAGE,0,0);
}void MyProc(int i)
{
printf("%d\n",i);
}DWORD WINAPI ThreadFun(LPVOID wParam)
{
MSG msg;
int i=0;
SetTimer(NULL,NULL,1000,TimerProc);
while(GetMessage(&msg,NULL,0,0))
{
switch(msg.message)
{
case WM_MYMESSAGE:
i++;
MyProc(i);
break;
default:
DispatchMessage(&msg);
}
}
return 0;
}
#include "stdafx.h"
#include <windows.h>
#define WM_MYMESSAGE WM_USER+1DWORD WINAPI ThreadFun(LPVOID wParam);int main(int argc, char* argv[])
{
HANDLE hThread=CreateThread(NULL,0,ThreadFun,NULL,0,NULL);
WaitForSingleObject(hThread,INFINITE);
return 0;
}
VOID CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
{
PostThreadMessage(GetCurrentThreadId(),WM_MYMESSAGE,0,0);
}void MyProc(int i)
{
printf("%d\n",i);
}DWORD WINAPI ThreadFun(LPVOID wParam)
{
MSG msg;
int i=0;
SetTimer(NULL,NULL,1000,TimerProc);
while(GetMessage(&msg,NULL,0,0))
{
switch(msg.message)
{
case WM_MYMESSAGE:
i++;
MyProc(i);
break;
default:
DispatchMessage(&msg);
}
}
return 0;
}